YTU 2896: J--Zipper

网友投稿 827 2022-08-26

YTU 2896: J--Zipper

YTU 2896: J--Zipper

2896: J--Zipper

时间限制: 1 Sec   内存限制: 128 MB

提交: 29

解决: 15

题目描述

Given three strings, you are to determine whether the third string can be formed by combining the characters in the first two strings. The first two strings can be mixed arbitrarily, but each must stay in its original order.  For example, consider forming "tcraete" from "cat" and "tree":  String A: cat  String B: tree  String C: tcraete  As you can see, we can form the third string by alternating characters from the two strings. As a second example, consider forming "catrtee" from "cat" and "tree":  String A: cat  String B: tree  String C: catrtee  Finally, notice that it is impossible to form "cttaree" from "cat" and "tree".

输入

The first line of input contains a single positive integer from 1 through 1000. It represents the number of data sets to follow. The processing for each data set is identical. The data sets appear on the following lines, one data set per line.  For each data set, the line of input consists of three strings, separated by a single space. All strings are composed of upper and lower case letters only. The length of the third string is always the sum of the lengths of the first two strings. The first two strings will have lengths between 1 and 200 characters, inclusive.

输出

For each data set, print:  Data set n: yes  if the third string can be formed from the first two, or  Data set n: no  if it cannot. Of course n should be replaced by the data set number. See the sample output below for an example.

样例输入

3cat tree tcraetecat tree catrteecat tree cttaree

样例输出

Data set 1: yesData set 2: yesData set 3: no

你  离  开  了  ,  我  的  世  界  里  只  剩  下  雨  。  。  。

#include#include#define MAX 201int opt[MAX][MAX];int main(){ int n; int cnt=0; char str1[MAX],str2[MAX],str3[MAX*2]; int len_str1,len_str2,len_str3; int i,j; scanf("%d",&n); while(n--) { cnt++; scanf("%s %s %s",str1,str2,str3); len_str1=strlen(str1); len_str2=strlen(str2); len_str3=strlen(str3); if(len_str1+len_str2!=len_str3) { printf("Data set %d: no\n",cnt); continue; } memset(opt,0,sizeof(opt)); opt[0][0]=1; for(i=1; i<=len_str1; i++) { if(opt[i-1][0]==1&&str1[i-1]==str3[i-1]) opt[i][0]=1; else break; } for(j=1; j<=len_str2; j++) { if(opt[0][j-1]==1&&str2[j-1]==str3[j-1]) opt[0][j]=1; else break; } for(i=1; i<=len_str1; i++) { for(j=1; j<=len_str2; j++) { if((opt[i][j-1]==1&&str2[j-1]==str3[i+j-1])||(opt[i-1][j]==1&&str1[i-1]==str3[i+j-1])) opt[i][j]=1; } } if(opt[len_str1][len_str2]) printf("Data set %d: yes\n",cnt); else printf("Data set %d: no\n",cnt); } return 0;}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:YTU 2897: E--外星人供给站
下一篇:POJ 2636:Electrical Outlets
相关文章

 发表评论

暂时没有评论,来抢沙发吧~