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”。

样例输入

2
abba
aab
bab
a
ab
aa

样例输出

Yes
No
#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;
}

 

posted @ 2016-10-01 20:58  多一份不为什么的坚持  阅读(621)  评论(0编辑  收藏  举报