#include<cstdio>
#include<cstring>
int dp[1010][1010];
char str1[1010],str2[1010],str[1010];
int main()
{
int T,t=1;
scanf("%d",&T);
while(T--)
{
memset(dp,0,sizeof(dp));
scanf("%s%s%s",str1,str2,str);
int len1=strlen(str1);
int len2=strlen(str2);
dp[0][0]=1;
for(int j=0;j<=len1;j++)
{
for(int k=0;k<=len2;k++)
{
if(j>0&&dp[j-1][k]&&str1[j-1]==str[j+k-1])
dp[j][k]=1;
if(k>0&&dp[j][k-1]&&str2[k-1]==str[j+k-1])
dp[j][k]=1;
}
}
printf("Data set %d: ",t++);
if(dp[len1][len2])
printf("yes\n");
else
printf("no\n");
}
return 0;
}poj 2192 DP 2个字符串 按照原来的先后顺序 看能否组成特定的字符串
最新推荐文章于 2021-02-05 20:22:48 发布
本文介绍了一个字符串匹配算法的具体实现,通过动态规划的方式判断两个输入字符串是否能够完全匹配第三个字符串。该算法首先初始化动态规划表,并通过两层循环遍历所有可能的状态,更新状态表来反映当前字符是否能成功匹配。


1877

被折叠的 条评论
为什么被折叠?



