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

这几天一直在做水题,各种水题,自己果然很水。。。。。

开一个二维数组。。

1458 Accepted 1148K 16MS C++ 778B 2012-02-13 23:43:52
#include <stdio.h>
#include <string.h>
int main()
{
char a[500] ,b[500];
int n[501][501] ,len1 ,len2 ,i ,j;
for(i = 0 ;i <= 500 ;i++)
n[0][i] = n[i][0] = 0;
while(scanf("%s%s",a ,b) != EOF)
{
len1 = strlen(a);
len2 = strlen(b);
for(i = 1 ;i <= len1 ;i++)
{
for(j = 1 ;j <= len2 ;j++)
{
if(a[i - 1] == b[j - 1])
n[i][j] = n[i - 1][j - 1] + 1;
else
n[i][j] = n[i - 1][j] > n[i][j - 1] ? n[i - 1][j] : n[i][j - 1];
}
}
printf("%d\n",n[len1][len2]);
}
return 0;
}

 开滚动数组。。。

1458 Accepted 164K 0MS C++ 779B 2012-02-14 23:53:57
#include <stdio.h>
#include <string.h>
int main()
{
char a[500] ,b[500];
int n[2][501] ,len1 ,len2 ,i ,j;
while(scanf("%s%s",a ,b) != EOF)
{
len1 = strlen(a);
len2 = strlen(b);
memset(n ,0 ,sizeof(n));
for(i = 1 ;i <= len1 ;i++)
{
for(j = 1 ;j <= len2 ;j++)
{
if(a[i - 1] == b[j - 1])
n[i % 2][j] = n[(i - 1) % 2][j - 1] + 1;
else
n[i % 2][j] = n[(i - 1) % 2][j] > n[i % 2][j - 1] ? n[(i - 1) % 2][j] : n[i % 2][j - 1];
}
}
printf("%d\n",n[len1 % 2][len2]);
}
return 0;
}

效率有很大差别。。。

posted on 2012-02-13 23:50  小墨在努力!!  阅读(184)  评论(2编辑  收藏  举报