最近写什么 WA什么烦死了,于是练练码力,水一水
顺便换个心情换个头像什么的 - -
这道题难点就是找准什么时候用 "automaton" 什么时候 用 "array"(这不是废话吗)
#include <cstdio> #include <cstring> using namespace std; char s[200],t[200]; int main() { scanf("%s%s",s,t); int ls=strlen(s),lt=strlen(t); int hashs[26]={0},hasht[26]={0};///记录字母用数组 if(lt>ls) ///t>s肯定是变不了的 { puts("need tree"); return 0; } int i=0,j=0,au=0,ar=0,f=0; while(i<ls) { if(s[i]==t[j]) { f++; hasht[t[j++]-'a']++; } if(f==lt) ///不是中间断开肯定不要用array ar=-1; hashs[s[i++]-'a']++; } if(j!=lt) au=0; else au=1; //printf("j:%d\n",j); while(j<ls) hasht[t[j++]-'a']++; for(i=0;i<26;i++) { if(hashs[i]<hasht[i]) break; } if(ar+1) ///如果ar不为-1时才判断是否用array if(i!=26) ar=0; else ar=1; else ar=0; if(ar&&ls!=lt) au=1; if(au&&ar) puts("both"); else if(au) puts("automaton"); else if(ar) puts("array"); else puts("need tree"); return 0; }