Uva 455 Periodic Strings
2017-10-08 21:06
423 查看
(大二了,感觉之前也不是十分认真地对待acm,现在认真,重新来过,先把基本的编程能力再加强,所以先听同学的,把紫书的三四章刷一下,只截取部分题解,希望能够多做题吧)
(看了一下题解,字符串还是很陌生的,枚举说实话也很菜,惭愧)
以下是代码:
#include<cstdio> //Uav 455 Periodic Strings(求字符串最小循环周期 简单枚举)
#include<cstring> //暴力枚举 主要学简洁的字符串基本枚举思想
int main()
{
int t, n, i, ans, j, f, k;
char s[100];
scanf("%d", &t);
while(t --)
{
int l;
scanf("%s", s);
l = strlen(s);
for(i = 1; i <= l; i ++) //i代表答案, 从1开始枚举
{
if(l % i == 0)
{
for(k = i; k < l; k ++) //k代表匹配串的位置, 利用i取模来找开头的模式串对应的位置, 必须枚举完
if(s[k] != s[k % i])
break;
if(k == l) //完成枚举即找到最小周期, 直接输出答案
{
printf("%d\n", i);
break;
}
}
}
if(t) //末尾不需输出回车
printf("\n");
}
return 0;
}
(看了一下题解,字符串还是很陌生的,枚举说实话也很菜,惭愧)
以下是代码:
#include<cstdio> //Uav 455 Periodic Strings(求字符串最小循环周期 简单枚举)
#include<cstring> //暴力枚举 主要学简洁的字符串基本枚举思想
int main()
{
int t, n, i, ans, j, f, k;
char s[100];
scanf("%d", &t);
while(t --)
{
int l;
scanf("%s", s);
l = strlen(s);
for(i = 1; i <= l; i ++) //i代表答案, 从1开始枚举
{
if(l % i == 0)
{
for(k = i; k < l; k ++) //k代表匹配串的位置, 利用i取模来找开头的模式串对应的位置, 必须枚举完
if(s[k] != s[k % i])
break;
if(k == l) //完成枚举即找到最小周期, 直接输出答案
{
printf("%d\n", i);
break;
}
}
}
if(t) //末尾不需输出回车
printf("\n");
}
return 0;
}
相关文章推荐
- uva455 - Periodic Strings
- Uva 455-periodic strings
- UVa 455 - Periodic Strings【字符串】
- Periodic Strings UVA - 455 周期串WA *
- UVa455--Periodic Strings
- Periodic Strings UVA - 455
- UVA - 455 Periodic Strings
- UVa-455 Periodic Strings
- UVA455 Periodic Strings
- Uva - 455 - Periodic Strings
- UVa-455 Periodic Strings
- uva 455 Periodic Strings
- Uva - 455 - Periodic Strings
- UVA-455 Periodic Strings
- UVa 455 - Periodic Strings
- UVa 455 - Periodic Strings
- UVa 455 - Periodic Strings
- UVa - 455 - Periodic Strings
- UVa 455 - Periodic Strings
- 【习题 3-4 UVA - 455】Periodic Strings