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,最后参考了一下,主要是循环节处的循环要注意
#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;
}
相关文章推荐
- UVa455 Periodic Strings
- Periodic Strings UVA - 455
- Periodic Strings UVA - 455
- UVa455 - Periodic Strings
- UVA - 455 Periodic Strings
- UVa 455 - Periodic Strings
- [UVA455]Periodic Strings
- 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
- UVa455 Periodic Strings
- Uva 455-periodic strings
- Periodic Strings UVA - 455 周期串WA *
- UVA - 455 Periodic Strings
- UVa 455 - Periodic Strings - ( C++ ) - 解题报告