首页 > 代码库 > FIX_前缀后缀_未提交
FIX_前缀后缀_未提交
问题 B: FIX
时间限制: 1 Sec 内存限制: 64 MB提交: 38 解决: 11
[提交][状态][讨论版]
题目描述
如果单词 X 由单词 Y 的前若干个字母构成,我们称 X 是 Y 的前缀,例如“c”、“ca”、“cat”是单词“cat”的前缀;类似地如果单词 X 由单词 Y 的最后若干个字母构成,我们称 X 是 Y的后缀,例如“t”、“at”、“cat”是单词“cat”的后缀。请你编一程序判断一组单词是否满足任一单词都不是其它单词的前缀且任一单词都不是其它单词的后缀。
输入
共有 3N+1 行,其中第一行包含一个正整数 N(N<=10),表示要你作出判断的单词总组数,每组单词有三个。接下来的 3N 行每行一个单词,每个单词长度不超过 255。
输出
共有 N 行,每行输出一个“Yes”或“No”,表示对相应的三个单词给出的判断结果,满足条件输出“Yes”,不满足条件输出“No”。
样例输入
2abbaaabbabaabaa
样例输出
YesNo
#include <iostream>#include <cstdio>#include <cstring>using namespace std;void revers(char s[],int len){ int c,j,i; for(int i=0,j=len-1;i<j;i++,j--){ s[i]^=s[j]; s[j]^=s[i]; s[i]^=s[j]; }}int main(){ int n; char a[3000]; char b[3000]; char c[3000]; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%s",a); scanf("%s",b); scanf("%s",c); int t4=0,t5=0; int lena=strlen(a); int lenb=strlen(b); int lenc=strlen(c); int l=0; int t1=0,t2=0,t3=0; int bbb=0; for(int j=0;j<3;j++){ if(j==0){ int l=0; int cou=0; while(a[cou]!=‘\0‘&&b[cou]!=‘\0‘){ if(a[cou]==b[cou]){ l++; } cou++; } if(l==lena){ printf("No\n"); bbb=1; break; } l=0; cou=0; while(a[cou]!=‘\0‘&&c[cou]!=‘\0‘){ if(a[cou]==c[cou]){ l++; } cou++; } if(l==lenc){ printf("No\n"); bbb=1; break; } t1=1; } if(j==1){ int l=0; int cou=0; while(b[cou]!=‘\0‘&&a[cou]!=‘\0‘){ if(b[cou]==a[cou]){ l++; } cou++; } if(l==lenb){ printf("No\n"); bbb=1; break; } l=0; cou=0; while(b[cou]!=‘\0‘&&c[cou]!=‘\0‘){ if(b[cou]==c[cou]){ l++; } cou++; } if(l==lenb){ printf("No\n"); bbb=1; break; } t2=1; } if(j==2){ int l=0; int cou=0; while(c[cou]!=‘\0‘&&a[cou]!=‘\0‘){ if(c[cou]==a[cou]){ l++; } cou++; } if(l==lenc){ printf("No\n"); bbb=1; break; } l=0; cou=0; while(c[cou]!=‘\0‘&&b[cou]!=‘\0‘){ if(c[cou]==b[cou]){ l++; } cou++; } if(l==lenc){ printf("No\n"); bbb=1; break; } t3=1; } if(t1==1&&t2==1&&t3==1){ t4=1; t1=0; t2=0; t3=0; } } if(bbb==1){ bbb=0; continue; } revers(a,lena); revers(b,lenb); revers(c,lenc); //printf("%s\n",a); //printf("%s\n",b); //printf("%s\n",c); l=0; t1=0; t2=0; t3=0; bbb=0; for(int j=0;j<3;j++){ if(j==0){ int l=0; int cou=0; while(a[cou]!=‘\0‘&&b[cou]!=‘\0‘){ if(a[cou]==b[cou]){ l++; } cou++; } if(l==lena){ printf("No\n"); bbb=1; break; } l=0; cou=0; while(a[cou]!=‘\0‘&&c[cou]!=‘\0‘){ if(a[cou]==c[cou]){ l++; } cou++; } if(l==lenc){ printf("No\n"); bbb=1; break; } t1=1; } if(j==1){ int l=0; int cou=0; while(b[cou]!=‘\0‘&&a[cou]!=‘\0‘){ if(b[cou]==a[cou]){ l++; } cou++; } if(l==lenb){ printf("No\n"); bbb=1; break; } l=0; cou=0; while(b[cou]!=‘\0‘&&c[cou]!=‘\0‘){ if(b[cou]==c[cou]){ l++; } cou++; } if(l==lenb){ printf("No\n"); bbb=1; break; } t2=1; } if(j==2){ int l=0; int cou=0; while(c[cou]!=‘\0‘&&a[cou]!=‘\0‘){ if(c[cou]==a[cou]){ l++; } cou++; } if(l==lenc){ printf("No\n"); bbb=1; break; } l=0; cou=0; while(c[cou]!=‘\0‘&&b[cou]!=‘\0‘){ if(c[cou]==b[cou]){ l++; } cou++; } if(l==lenc){ printf("No\n"); bbb=1; break; } t3=1; } if(t1==1&&t2==1&&t3==1){ t5=1; t1=0; t2=0; t3=0; } } if(bbb==1){ bbb=0; continue; } if(t4==1||t5==1){ printf("Yes\n"); t4=0; t5=0; continue; } } return 0;}
FIX_前缀后缀_未提交
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。