题意:如果串A中包含串B的所有字母, 并且这些字母在串A和串B中排列顺序相同, 输出“automaton”, 否则,如果串A中包含串B的所有字母, 我们在这种情况下在进行讨论,如果A和B的长度相等, 输出“array”,如果A比B长,输出“both”, 否则输出“need tree”。
#include "stack"
#include "cstdio"
#include "iostream"
#include "cmath"
#include "set"
#include "sstream"
#include "cctype"
#include "string"
#include "cstring"
#include "algorithm"
#include "queue"
#include "map"
using namespace std;
#define LL long long
#define inf 0x7ffffff
#define pa pair<int,int>
#define pi 3.1415926535897932384626433832795028841971
const int M=105;
int main()
{
int i,j,k;
char a[M],b[M];
cin>>a>>b;
int l1,l2;
l1=strlen(a);
l2=strlen(b);
int flag=0;
for(i=0,j=0;i<l2,j<l1;)
{
if(b[i]==a[j])
{
i++;
j++;
if(i==l2 )
{
printf("automaton\n");
flag=1;
}
}
else
j++;
}
int c=0;
if(flag==0)
{
for(i=0;i<l2;i++)
{
for(j=0;j<l1;j++)
{
if(b[i]==a[j])
{
c++;
a[j]=5;
break;
}
}
}
if(c==l2 && l1==l2)
printf("array\n");
else if(c==l2 && l1>l2)
printf("both\n");
else
printf("need tree\n");
}
}