zoukankan      html  css  js  c++  java
  • UVa455

    题目链接

    https://vjudge.net/problem/UVA-455

    代码

    #include <iostream>
    #include <cstring>
    using namespace std;
    
    int main()
    {
        int N; // 测试用例的个数
        char s[100];
        int res;
        scanf("%d", &N);
        while (N--)
        {
            scanf("%s", s);
            int len = strlen(s);
            int cirNum = len / 2 + 1;
            res = 0;
            int flag;
            for (int i = 0; i < cirNum; i++)
            {
                flag = 1;
                res = i + 1;
                for (int j = 0; j < len; j++)
                {
                    if (s[j] != s[j % res])
                    {
                        flag = 0;
                        break;
                    }
                }
                if (flag)
                    break;
            }
            if (!flag || (len % res) != 0)
                res = len;
            printf("%d
    ", res);
            if (N > 0)
                printf("
    ");
        }
    
        return 0;
    }
    

    image-20201231222843430

    按:其实这是一道相对简单的题目,但是我在 VJudge 上提交了四五次都是 WA,然后到 uDebug 上跑测试用例才 debug 出来错误在哪里,那就是,我没有判断最后的结果是可以被字符串的长度 len 给整除!真是的!花了我两个多小时!

    不过,机缘巧合,找到了一个比较好的网站,uDebug,来跑 UVa 的用例真是相当合适!

    原来我错误的地方就是下面这段代码的 if 语句中少加了一个 (len % res) != 0。

    if (!flag || (len % res) != 0)
        res = len;
    
  • 相关阅读:
    ZOJ 3556
    ZOJ 2836
    HDU 2841
    HDU 4135
    POJ 3695
    POJ 2773
    HDU 4407
    HDU 1796
    ZOJ 3688
    ZOJ 3687
  • 原文地址:https://www.cnblogs.com/fanlumaster/p/14218866.html
Copyright © 2011-2022 走看看