您的位置:首页 > 其它

UVA 10066 - The Twin Towers(最长公共子序)

2012-07-20 15:27 459 查看
题目链接

题目 都没看,直接看样例,直接拍代码,1Y。

#include <stdio.h>
#include <string.h>
int p[101][101];
int str1[101],str2[101];
int main()
{
int i,j,n,m,num = 0;
while(scanf("%d%d",&n,&m)!=EOF)
{
if(!n && !m)break;
num ++;
memset(p,0,sizeof(p));
for(i = 0; i <= n-1; i ++)
scanf("%d",&str1[i]);
for(i = 0; i <= m-1; i ++)
scanf("%d",&str2[i]);
for(i = 1; i <= n; i ++)
for(j = 1; j <= m; j ++)
{
if(str1[i-1] == str2[j-1])
{
p[i][j] = p[i-1][j-1]+1;
}
else if(p[i][j-1] > p[i-1][j])
{
p[i][j] = p[i][j-1];
}
else
{
p[i][j] = p[i-1][j];
}
}
printf("Twin Towers #%d\nNumber of Tiles : %d\n",num,p
[m]);
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: