您的位置:首页 > 其它

uva455 Periodic Strings

2017-04-03 22:52 429 查看
题目:算出字符串最短循环节

注意:自己的方法多次WA,最后参考了一下,主要是循环节处的循环要注意

#include <cstdio>
#include <cstdlib>
#include <cstring>

using namespace std;

int main(int argc, char *argv[])
{
int N = 0;
char word[100];
scanf("%d", &N);
while (N--)
{
scanf("%s", word);
int len = strlen(word);
for (int i = 1; i <= len; ++i)
{
if (len % i == 0)//如果满足要求,最后的长度%len=0,所以下一个循环节开始应该是len % i == 0 的时候
{
int flag = 1;
for (int j = i; j < len; ++j)
{
if (word[j] != word[j % i]) //非常巧妙,用j%i,可以不断循环,一直到最后,如果都没有改变flag的状态
//就是需要的i
{
flag = 0;
break;
}
}
if (flag)
{
printf("%d\n", i);
break;
}
}
}
if (N != 0)
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  多次wa 坑爹题目