Codeforces 448B. Suffix Structures
2014-07-18 09:22
260 查看
题目链接:http://codeforces.com/contest/448/problem/B
题意:给你两个字符串S和T,有两种变换方式,第一种是可以删除字符串中任意一个字符,这种方式是automaton。第二种是交换字符串中任意两个字符的位置,这种交换叫array。问题是只有这两种方式可不可以从字符串S变成字符串T。有四种情况。
第一种是只用automaton这种交换方式。
第二种是只用array这种交换方式。
第三种是两种变换方式都用。
第四种是用了这两种方法也无法从字符串S变成字符串T。
代码如下:
题意:给你两个字符串S和T,有两种变换方式,第一种是可以删除字符串中任意一个字符,这种方式是automaton。第二种是交换字符串中任意两个字符的位置,这种交换叫array。问题是只有这两种方式可不可以从字符串S变成字符串T。有四种情况。
第一种是只用automaton这种交换方式。
第二种是只用array这种交换方式。
第三种是两种变换方式都用。
第四种是用了这两种方法也无法从字符串S变成字符串T。
代码如下:
#include<stdio.h> #include<string.h> #include<stdlib.h> int main() { char s[110]; char t[110]; int num1[30]; int num2[30]; int i,j; int f=0; int flag=0; scanf("%s %s",s,t); memset(num1,0,sizeof(num1)); memset(num2,0,sizeof(num2)); for(i=0;s[i]!='\0';i++) { num1[s[i]-'a']++; } for(i=0;t[i]!='\0';i++) { num2[t[i]-'a']++; } for(i=0;i<26;i++) { if(num2[i]>num1[i]) { printf("need tree\n"); flag=1; break; } } if(flag!=1) { for(i=0;i<26;i++) { if(num2[i]==num1[i]) { f++; } } if(f==26) { printf("array\n"); } else { j=0; for(i=0;s[i]!='\0';i++) { if(s[i]==t[j]) j++; } if(t[j]=='\0') printf("automaton\n"); else printf("both\n"); } } return 0; }
相关文章推荐
- CodeForces_507B_Amr and Pins(思维题)
- CodeForces 620 C. Pearls in a Row(贪心)
- CodeForces 705B Spider Man(蜘蛛侠游戏)
- CodeForces - 540C Ice Cave(BFS)
- codeforces 404B Marathon
- CodeForces - 697E PLEASE
- codeforces 189A Cut Ribbon
- CodeForces 618 A. Slime Combining(水~)
- CodeForces 701B Cells Not Under Attack
- codeforces 777b Game of Credit Cards
- CodeForces 617E XOR and Favorite Number(莫队)
- codeforces 919 C Seat Arrangements
- New Year Santa Network - CodeForces 500 D 树形dp
- CodeForces 479E E. Riding in a Lift
- CodeForces 367E Working routine 十字链表
- Codeforces 779D String Game 二分
- Jzzhu and Sequences CodeForces - 450B (矩阵快速幂)
- Codeforces - 919E - Congruence Equation
- codeforces 167B Wizards and Huge Prize 概率dp
- codeforces 628D 数位dp