ECNUOJ 2147 字符环

字符环

Time Limit:1000MS Memory Limit:65536KB
Total Submit:562 Accepted:146

Description 

字符环:就是将给定的一个字符串,首尾相连而形成的一个环。
现在我们来玩一个有趣的两人游戏:
每次甲给出两个字符串A和B,然后让乙判断字符串B是否能够被字符环A所包含.
例如,A = aabcd , B = cdaa , 那么B可以包含在A经过旋转后的字符串A’ = cdaab中.

Input 

输入数据的第一行,一个正整数N,表示测试数据的组数.
对于每个数据:
首先2个正整数lengtha 和 lengthb代表字符串A和字符串B的长度。
接下来一行有两个被一个空格隔开的字符串A和B,A和B的长度如上所输入的长度。
长度的范围是1<=length<=100,并且字符串种只含有小写字母

Output 

对于每组测试数据,输出只有一行

如果B字符串含在字符环A中,则输出:YES 否则输出:NO

Sample Input 

2
5 4
aabcd cdaa
5 4
babcd cdaa

Sample Output 

YES
NO


Hint:
aabcd 经过顺时针循环移动可以得到:aabcd-->abcda-->bcdaa-->abcda-->cdaab-->daabc
babcd 经过顺时针循环移动可以得到:babcd-->abcdb-->bcdba-->cdbab-->dbabc-->babcd

Source

第一届程序设计竞赛

解题:这么傻逼的题目居然只有这么点AC率。。。

喜欢坑爹,会出现m大于n的情况,特别要注意这个

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 string a,b;
 4 int main() {
 5     int kase,n,m;
 6     ios::sync_with_stdio(false);
 7     cin>>kase;
 8     while(kase--) {
 9         cin>>n>>m;
10         cin>>a>>b;
11         if(m > n) {
12             puts("NO");
13             continue;
14         }
15         a += a;
16         if(a.find(b) == a.npos) puts("NO");
17         else puts("YES");
18     }
19     return 0;
20 }
View Code
原文地址:https://www.cnblogs.com/crackpotisback/p/4638556.html