UVA10192题解
为了尽可能满足父母亲的要求,我们应该取两个字符串的最长公共子序列。
设
则易知
如果
所以最终的柿子是:
其中,当
注意到字符串的长度很小,直接
#include<cstdio>
#include<cstring>
char a[110],b[110];
int n,m;
int dp[110][110];
int d;
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
while(gets(a+1),gets(b+1))
{
if(a[1]=='#') break;
d++;
n=strlen(a+1),m=strlen(b+1);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
if(a[i]==b[j]) dp[i][j]=max(dp[i][j],dp[i-1][j-1]+1);
}
printf("Case #%d: you can visit at most %d cities.\n",d,dp[n][m]);
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构