dfs 有点麻烦,不过也不是很难
1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 char str1[205],str2[205],str3[405]; 5 int flag; 6 int len1,len2,len3; 7 int hash[205][205]; 8 void dfs(int a,int b,int c) 9 { 10 if(flag) 11 return; 12 if(c==len3) 13 { 14 flag=1; 15 return; 16 } 17 if(hash[a][b]) 18 return; 19 hash[a][b]=1; 20 if(str1[a]==str3[c]) 21 dfs(a+1,b,c+1); 22 if(str2[b]==str3[c]) 23 dfs(a,b+1,c+1); 24 } 25 int main() 26 { 27 int i,t; 28 scanf("%d",&t); 29 for(i=1;i<=t;i++) 30 { 31 scanf("%s%s%s",str1,str2,str3); 32 printf("Data set %d: ",i); 33 len1=strlen(str1); 34 len2=strlen(str2); 35 len3=strlen(str3); 36 if(len1+len2!=len3) 37 { 38 printf("no "); 39 continue; 40 } 41 memset(hash,0,sizeof(hash)); 42 flag=0; 43 dfs(0,0,0); 44 if(flag) 45 printf("yes "); 46 else 47 printf("no "); 48 } 49 return 0; 50 }