您的位置:首页 > 其它

算法竞赛入门经典(第二版) 习题3-4 周期串(Periodic Strigs) UVa455

2015-08-07 19:59 148 查看
Page 57

题意:输入一个长度不超过80的字符串,输出其最小正周期。

思路:周期一定能被字符串长度整除,故枚举所有可能的周期,逐个判断直到找到最小正周期。

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cctype>
#include<cmath>
using namespace std;
#define max 85
char s[max];

int main(){
//freopen("in.txt","r",stdin);
int T,i,j,l;
scanf("%d",&T);
while(T--){
scanf("%s",s);
l=strlen(s);
for(i=1;i<=l/2+1;i++){
if(l%i==0){
int n=1,j=i;
while(s[j]!=0){
if(s[j]!=s[j%i]) {
n=0;break;}
j++;
}
if(n){
if(T==0) printf("%d\n",i);
else printf("%d\n\n",i);
break;
}
}
else if(i==l/2+1){
if(T==0) printf("%d\n",l);
else printf("%d\n\n",l);
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: