您的位置:首页 > 其它

UVa 455 - Periodic Strings

2015-07-31 11:42 260 查看
题目:

        求字符串中最小循环节。

输入:

        第一行为测试数目N,空一行之后为N个字符串,每个字符串之间空一行。

输出:

        每个字符串最小循环节长度k,每个答案之间空一行。

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
int N;
cin >> N;
char s[100];
while( N-- )
{
cin >> s;
int length = strlen(s);
int k = 1;
while( k < length )
{
int a = length%k;
if( a == 0 )
{
int i;
for( i = 0; i < k; i++)
{
int j = 1;
while( j < length/k )
{
if( s[i + j*k] == s[i] )  j++;
else break;
}
if( j != length/k ) break;
}
if( i == k ) break;
else k++;
}
else k++;
}
cout << k << endl;
if( N )cout << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: