本文主要是介绍xtu oj 1337 Clockwise Or Unclokwise,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
我们把一个字符串A按圆圈排列,你可以从圆圈上任意一个字符开始,顺时钟或者逆时钟读若干个字符,请问是否能得到给定的字符串B?比如字符串A="abcde",我们从第2个字符开始,逆时钟读3个字符,可以得到字符串"bae"。
输入
第一行是样例数T(1≤T≤100)。 每个样例的占两行,第一行是字符串A,第二行是字符串B,所有字符串都只含小写英文字母,且长度不超过100个字符。
输出
每行输出一个样例的结果,如果可以输出"Yes",否则输出"No"。样例输入
5
abcde
cbae
abcde
deab
abc
abcabc
abcb
babcba
ab
aa
样例输出
Yes
Yes
Yes
Yes
No
AC代码
#include<stdio.h>
#include<string.h>
int main(){int T;scanf("%d",&T);while(T--){char a[105];char b[105];scanf("%s%s",a,b);int la=strlen(a);int lb=strlen(b);int i,j,t,flag;for(i=0;i<la;i++){if(a[i]==b[0]){t=i;flag=1;for(j=0;j<lb;j++){if(a[t]!=b[j]){flag=0;break;} t++;if(t==la)t=0;}if(flag==1)break;}}if(flag==0){for(i=0;i<la;i++){if(a[i]==b[0]){t=i;flag=1;for(j=0;j<lb;j++){if(a[t]!=b[j]){flag=0;break;} t--;if(t<0)t=la-1;}if(flag==1)break;}}}if(flag)printf("Yes\n");else printf("No\n");}
}
解题分析:分顺时针和逆时针两种情况讨论。顺时针:当比较的字符是数组最后一个元素时,下一个比较的元素应该置为0。逆时针:当比较的字符是数组第一个元素时,下一个比较的元素应该置为为数组最后一个元素。注意循环退出条件,满足条件退出,否则会wa
这篇关于xtu oj 1337 Clockwise Or Unclokwise的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!