uva455 Periodic Strings

来源:互联网 发布:centos没有桌面文件夹 编辑:程序博客网 时间:2024/06/03 19:46

题目:算出字符串最短循环节

注意:自己的方法多次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;}


0 0
原创粉丝点击