http://acm.hdu.edu.cn/showproblem.php?pid=1159
搜了下,感觉大家写的都很好,例如以下:
http://blog.csdn.net/jqandjq/article/details/4021302
http://blog.csdn.net/jiahui524/article/details/6653192(给出了最长公共子序列LCS的模板)http://blog.csdn.net/jiahui524/article/details/6653181
代码如下:(地址从0开始和1开始要注意下,不要越界)
#include<cstdio>
#include<cstring>
int maxlen[1002][1002];
int main()
{
char chA[1001], chB[1001];
while(scanf("%s %s", chA, chB)==2)
{
int lenA = strlen(chA);
int lenB = strlen(chB);
memset(maxlen, 0, sizeof(maxlen));
for(int i = 1; i <= lenA; ++i)
{
for(int j = 1; j <= lenB; ++j)
{
if(chA[i-1] == chB[j-1])
{
maxlen[i][j] = maxlen[i-1][j-1] + 1;
}
else
{
maxlen[i][j] = maxlen[i-1][j] > maxlen[i][j-1] ? maxlen[i-1][j] : maxlen[i][j-1];
}
}
}
printf("%d\n", maxlen[lenA][lenB]);
}
return 0;
}