码迷,mamicode.com
首页 > 其他好文 > 详细

ECNUOJ 2147 字符环

时间:2015-07-11 15:04:22      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

字符环

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

 

ECNUOJ 2147 字符环

标签:

原文地址:http://www.cnblogs.com/crackpotisback/p/4638556.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!