水题。
也要考虑到特殊情况:如t比s长的情况,直接need tree,不用判断。
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int cmp(const void *a,const void *b){
return *(char *)a-*(char *)b;
}
int compare(char a[105],char b[105]){
int i,j,flag=0,len1=strlen(a),len2=strlen(b);
int alpha[26],beta[26];
memset(alpha,0,sizeof(alpha));
memset(beta,0,sizeof(beta));
for(i=0;i<len1;i++){
alpha[a[i]-'a']++;
}
for(i=0;i<len2;i++){
beta[b[i]-'a']++;
}
/*for(i=0;i<=25;i++)printf("%d ",alpha[i]);
printf("\n");
for(i=0;i<=25;i++)printf("%d ",beta[i]);
printf("\n");*/
for(i=0;i<=25;i++){
if(beta[i]>alpha[i])return 4;
}
for(i=0;i<=25;i++){
if(beta[i]<alpha[i])return 3;
}
return 2;
}
int main(){
char s[105],t[105],temp[105];
scanf("%s",&s);
scanf("%s",&t);
int len1=strlen(s),len2=strlen(t);
int ways=4;
int i,j,k;
j=0;
for(i=0;i<len1;i++){
if(s[i]==t[j])j++;
if(j==len2){
ways=1;
break;
}
}
if(ways==1){
printf("automaton");
}
else{
ways=compare(s,t);
if(strlen(s)<strlen(t))ways=4;
switch(ways){
case 2:printf("array");break;
case 3:printf("both");break;
case 4:printf("need tree");break;
default:break;
}
}
return 0;
}