为什么我在此问题上得到错误答案(Uva OJ 455)

时间:2019-05-19 00:07:18

标签: c algorithm

我为this problem(Uva 455)而疯狂:

  

如果字符串可以由以下字符组成,则称其为句点 k   连接另一个长度为 k 的字符串的一个或多个重复。   例如,字符串“ abcabcabcabc”具有句点3,因为它是   由字符串“ abc”的4个重复组成。它还有时期6   (两次重复“ abcabc”)和12次(一次重复   “ abcabcabcabc”。

     

编写程序以读取字符串,然后   确定其最小周期。

     

输入

     

输入文件的第一行   将包含一个整数 N ,指示该测试用例有多少个   您的程序将进行测试,后跟空白行。每个测试用例将   包含一个字符串,最多80个非空白字符。   两个连续的输入将由空白行分隔。

     

输出

     

一个   整数,表示每个输入字符串的最小周期   输入。两个连续的输出用空行分隔。

     

样本输入

1

HoHoHo
     

样本输出

2

我检查了我可以想象的所有测试用例,并且所有测试用例都返回了正确的结果,但在线法官仍然收到错误答案。我哪里做错了? (英语不是我的母语;请原谅输入或语法错误。)

#include <stdio.h>
#include <string.h>
#define maxn 85

int check(char* s, int per){
    for(int i = 0; i < strlen(s) - per; i++){
        if(s[i + per] != s[i])  return 0;
    }
    return 1;
}

int main(){
    int T;
    scanf("%d", &T);
    char s[maxn];
    while(T--){
        scanf("%s", s);
        int len = strlen(s);
        bool OK = false;
    for(int i = 1; i <= len/2 && (len % i == 0); i++){//That's wrong.
        if(check(s, i)){
            printf("%d\n", i);
        OK = true;
        break;
        }
    }
        if(!OK) printf("%d\n", len);
        if(T)   printf("\n");
    }
    return 0;
}

1 个答案:

答案 0 :(得分:0)

问题出在$('#fetchXML').click(function(){ $('#xmlContent').text('Loading ...'); const feedUrl = 'https://cors-anywhere.herokuapp.com/http://feeds.wnyc.org/dearhankandjohn'; const headers = new Headers({ 'X-Requested-With':'XMLHttpRequest' }); fetch(feedUrl, headers) .then(function(response) { return response.text(); }) .then(function(xmlText) { $('#xmlContent').text(xmlText); }) .catch(function(err){ $('#xmlContent').text(err); }); });中。您遇到遇到<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <table> <tr> <td><button id="fetchXML"> Fetch Feed </button></td> </tr> <tr> <td id="xmlContent"></td> </tr> </table>不会除for(int i = 1; i <= len/2 && (len % i == 0); i++)而不是跳过它的情况时就立即停止。

将循环写为:

i