CodeForces 448B Suffix Structures

题意:如果串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");
 		
 	}
		
		
		
		
}
	


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值