#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;
}
我已经进行了几次干运行,我得到了结果。我不确定为什么我会超出时间限制错误。该代码适用于除#2(即1100001)之外的每个测试用例。
请帮助我,我已经坚持了很长一段时间。
答案 0 :(得分:0)
我只需要将i = 0更改为i = -1以避免无限循环。