判断s1,s2是否能组成s3,可以全部匹配,比较简单,直接判断就行
#include<stdio.h>
#include<string.h>
int dp[1010][1010];
int l1,l2;
char s1[1010],s2[1010],s3[2020];
int main()
{
int i,j,k,n;
scanf("%d",&n);
for(k=1;k<=n;k++)
{
scanf("%s %s %s",&s1,&s2,&s3);
memset(dp,0,sizeof(dp));
l1=strlen(s1);
l2=strlen(s2);
dp[0][0]=1;
for(i=0;i<=l1;i++)
{
for(j=0;j<=l2;j++)
{
if(i>0&&s1[i-1]==s3[i+j-1]&&dp[i-1][j]==1)
dp[i][j]=1;
if(j>0&&s2[j-1]==s3[i+j-1]&&dp[i][j-1]==1)
dp[i][j]=1;
}
}
printf("Data set %d: ",k);
if(dp[l1][l2]==1)
printf("yes\n");
else
printf("no\n");
}
return 0;
}
本文介绍了一个简单的字符串匹配问题解决方案,通过二维动态规划判断两个字符串s1和s2能否组合成第三个字符串s3。该算法适用于编程竞赛及字符串处理相关场景。

434

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



