UVA455

来源:互联网 发布:mac book pro 201515.4 编辑:程序博客网 时间:2024/06/05 16:43

UVA455

(笨脑子很难抽象的去想问题,这道题也是,要多加练习)
我的思路:从第一个元素开始,在遇到相同元素,就暂且把这个元素的序列作为最小周期,在循环判断,是否是循环数列,如果不是就退出,并找出下一个符合的最小周期,直到最后都没有退出,则输出这个最小周期。
总结:我的思路总是一步一步进行,但我看到大佬的博客,说的就很简洁:枚举循环节(循环节要能被字符串长度整除),进行循环判断,找到第一组解就是最小解。

先上大佬的代码

#include<iostream>#include<stdio.h>#include<string.h>using namespace std;int main(){    int t; cin >> t;    char s[85];    while (t--)    {        memset(s, 0, sizeof(s));        scanf("%s", s);        int len = strlen(s);        int j;        for (int i = 1; i <= len; ++i)            if (len%i == 0)             {                for (j = i; j <= len; j++)                    if (s[j] != s[j%i])                        break;                if (j == len)                {                    cout << i << endl;                    break;                }            }        if (t)cout << endl;    }}

再上我的代码,好吧,其实没有代码,虽然我的解释和大佬的解释看上去很不一样,但当我去一步步写自己的代码的时候,发现其实是差不多的。
现在的要提升的就是把自己对题目的理解转化成代码的能力!!!

原创粉丝点击