小墨在努力!!
吗了个b的。。。。。

都是最长公共子序列。。。。水题,前面的代码就没呢改,加了一个变量就过了,不解释

Source Code

Problem: 3356 User: XXX
Memory: 172K Time: 16MS
Language: C++ Result: Accepted

Source Code
#include <stdio.h>
#include <string.h>
int main()
{
char str1[1005] ,str2[1005];
int len1 ,len2 ,len ,i ,j ,dp[2][1005];
while(scanf("%d %s %d %s" ,&len1 ,&str1 ,&len2 ,&str2) != EOF)
{
memset(dp ,0 ,sizeof(dp));
for(i = 1 ;i <= len1 ;i++)
{
for(j = 1 ;j <= len2 ;j++)
{
if(str1[i - 1] == str2[j - 1])
dp[i % 2][j] = dp[(i - 1) % 2][j - 1] + 1;
else
dp[i % 2][j] = dp[(i - 1) % 2][j] > dp[i % 2][j - 1] ? dp[(i - 1) % 2][j] : dp[i % 2][j - 1];
}
}
len = len1 > len2 ? len1 : len2;
printf("%d\n",len - dp[len1 % 2][len2]);
}
return 0;
}

 

posted on 2012-02-17 13:30  小墨在努力!!  阅读(159)  评论(0编辑  收藏  举报