ループセクションの簡単な列挙

693 ワード

:1つの列の最小循環節を求めます.
分析:暴力、文字列.データ量が小さく、列挙法を直接使用します.
ループ節の長さを列挙し,一致判断し,第1の解のセットを見つけると最小となる.
説明:(⊙⊙).
vj 455
#include 
#include 
#include 
#include 

using namespace std;

char str[104];

int main()
{
	int n;
	while (~scanf("%d",&n))
	while (n --) {
		scanf("%s",str);
		int len = strlen(str); 
		for (int k,i = 1 ; i <= len ; ++ i)
			if (len%i == 0) {
				for (k = i ; k < len ; ++ k)
					if (str[k] != str[k%i])
						break;
				if (k == len) {
					printf("%d
",i); break; } } if (n) printf("
"); } return 0; }