描述:依然是最长子序列问题……
#include <cstdio>
#include <cstring>
int max(int a,int b)
{
if(a>b) return a;
else return b;
}
char str[2][110];
int s[110][110];
int main()
{
//freopen("a.txt","r",stdin);
int n,m,flag=1;
while(gets(str[0]))
{
if(str[0][0]=='#') break;
gets(str[1]);
memset(s,0,sizeof(s));
m=strlen(str[1]);
n=strlen(str[0]);
for(int i=n-1; i>=0; i--)
for(int j=m-1; j>=0; j--)
{
if(str[0][i]==str[1][j]) s[i][j]=s[i+1][j+1]+1;
else s[i][j]=max(max(s[i][j+1],s[i+1][j]),s[i+1][j+1]);
}
printf("Case #%d: you can visit at most %d cities.\n",flag++,s[0][0]);
}
return 0;
}
10192 - Vacation
最新推荐文章于 2019-07-23 20:36:01 发布