题意是给我们两个字符串,再在第一个字符串中找第二个,
给了我们两种方法,一:在第一个字符串删掉一些字符后得到第二个字符串;
二:在第一个字符串中改变一些字符的先后顺序得到字符串二;
如果只用第一种方法输出: automaton;
只用第二种输出:array
两种都用输出:both;
找不到输出:need tree;
直接找就行,,,,,,水
#include<stdio.h> #include<string.h> using namespace std; int main() { char a[101],b[101]; int s[101]; int c,d,i,j; scanf("%s",a); scanf("%s",b); c=strlen(a); d=strlen(b); for(i=0,j=0;i<c;i++) { if(a[i]==b[j]) { j++; } if(j==d) {printf("automaton\n");return 0;} } int e=0; memset(s,0,sizeof(s)); for(int i=0;i<d;i++) { for(int j=0;j<c;j++) { if(s[j]!=1){ if( b[i]==a[j]) { s[j]=1; e++; break; } } } } if(e==d) { if(c==d) {printf("array\n");} if(c>d) printf("both\n"); } else printf("need tree\n"); return 0; }
codeforces Div.2 B.Suffix Structures
时间: 2024-10-11 04:47:44