和UVA 111几乎一模一样,不同的是它读入的是char,注意一下空格的问题就行了。虽然上次是抄的,这次就能自己写了。

 1 #include <iostream>
2 #include <cstring>
3 using namespace std;
4 const int MAX = 1005;
5 char a[MAX],b[MAX];
6 int dp[MAX][MAX];
7 int main()
8 {
9 int la,lb,i,j;
10 while(cin.getline(a,MAX))
11 {
12 cin.getline(b,MAX);
13 la = strlen(a);
14 lb = strlen(b);
15 memset(dp,0,sizeof(dp));
16 for(i = 0; i < la; i++)
17 for(j = 0; j < lb; j++)
18 if(a[i] == b[j])
19 dp[i+1][j+1] = dp[i][j] + 1;
20 else
21 dp[i+1][j+1] = max(dp[i][j+1],dp[i+1][j]);
22 cout<<dp[la][lb]<<endl;
23 }
24 return 0;
25 }

不过UVA还真是变态,明明是c++,却不支持string类,也不能include<string>,太坑爹了。