<span style="color:#3333ff;">/* —————————————————————————————————————————————————————————————————————— author : Grant Yuan time : 2014.7.22 algorithm : 字符串匹配 explain : 对两个字符串中的每个字符的个数进行统计,如果第二个字符串中有字符的个数 比第一个字符串中相应字符的个数多,则输出“need tree”; 否则,用字符串B在A中进行单个字符的一一匹配,如果能够匹配下来,则为“automaton”,否则,如果两个字符串的长度 相等,则为“array”,如果前面条件都不满足,则为“both”。 —————————————————————————————————————————————————————————————————————— */ #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> using namespace std; int a[26]; char s1[103],s2[103]; int l1,l2; int main() { while(~scanf("%s%s",&s1,&s2)){ l1=strlen(s1); l2=strlen(s2); memset(a,0,sizeof(a)); int t=0; for(int i=0;i<l1;i++) { a[s1[i]-'a']++; } for(int i=0;i<l2;i++) a[s2[i]-'a']--; int flag1=1; for(int i=0;i<26;i++){ if(a[i]<0) flag1=0; } if(flag1==0) printf("need tree\n"); else { int t=0; for(int i=0;i<l1;i++) if(s1[i]==s2[t]) t++; if(t==l2) printf("automaton\n"); else if(l1==l2) printf("array\n"); else printf("both\n"); } } return 0; } </span>
【组队赛三】-C cf448B,布布扣,bubuko.com
原文地址:http://blog.csdn.net/yuanchang_best/article/details/38043241