这段代码有什么问题?我的时间限制超出了错误。

时间:2017-04-14 19:45:23

标签: c

#include<stdio.h>
#include<string.h>
int main() {
    int test_case, count, i, j, check, count_1; char a[100005];
    scanf("%d", &test_case);
    while(test_case--) {
        scanf("%s", a);
        count=count_1=0;
        for(i=0;i<strlen(a);i++) {
            if(a[i]=='1') {
                count_1++;    
            }
        }
        for(i=0;i<strlen(a);i++) {
            if(a[i]=='1'&&a[i+1]!='1'&&a[i+1]!='\0') {
                count++;
                for(j=(i+1);j<strlen(a);j++) {
                    if(a[j]=='0') {
                        a[j]='1';
                        a[j-1]='0';
                        count++;
                    }
                    else {
                        break;
                    }
                }
            }
            if(i==(strlen(a)-1)) {
                check=0;
                for(j=(strlen(a)-1);j>=1;j--) {
                    if(a[j]=='1'&&a[j-1]=='1') {
                        check++;
                    }
                    else {
                        break;
                    }
                }
                if(check==(count_1-1)) {
                    break;
                }
                else {
                    i=0;
                }
            }
        }
        printf("%d\n", count);
    }
return 0;
} 

This is the question.

我已经进行了几次干运行,我得到了结果。我不确定为什么我会超出时间限制错误。该代码适用于除#2(即1100001)之外的每个测试用例。

请帮助我,我已经坚持了很长一段时间。

1 个答案:

答案 0 :(得分:0)

我只需要将i = 0更改为i = -1以避免无限循环。