解析:求两个字符串的最大公共子序列的个数
注意:输入的时候要用gets输入,因为' '也算。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 110;
char fa[N],ma[N];
int dp[N][N];
int main() {
int len1,len2,cas = 1;
while(gets(fa)) {
if(fa[0] == '#') {
break;
}
gets(ma);
len1 = strlen(fa);
len2 = strlen(ma);
memset(dp,0,sizeof(dp));
for(int i = 1; i <= len1; i++) {
for(int j = 1; j <= len2; j++) {
if(fa[i-1] == ma[j-1]) {
dp[i][j] = dp[i-1][j-1] + 1;
}else {
dp[i][j] = max(dp[i-1][j],dp[i][j-1]);
}
}
}
printf("Case #%d: you can visit at most %d cities.\n",cas++,dp[len1][len2]);
}
return 0;
}