首页 > 代码库 > 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_前缀后缀_未提交