UVA10192题解

为了尽可能满足父母亲的要求,我们应该取两个字符串的最长公共子序列。

洛谷模板题

dpi,ja 串匹配到第 i 位,b 串匹配到第 j 位时的最长公共子序列长度。

则易知 dpi,j 可以由 dpi1,jdpi,j1 转移过来。

如果 ai=bj,则 dpi,j 还能从 dpi1,j1 转移过来。

所以最终的柿子是:dpi,j=max(dpi1,j,dpi,j1,[ai=bj]×dpi1,j1)

其中,当 ai=bj 时,[ai=bj]=1,否则 [ai=bj]=0

注意到字符串的长度很小,直接 O(n2) 暴力转移即可。

#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;
}
posted @   osfly  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示