C题求大佬指导,只通过了41%
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
scanf("%d",&n);
char *s=(char*)malloc(sizeof(char)*(n+1));
scanf("%s",s);
int zero=0;
int one=0;
int count=0;
int flag=1;
for(int i=0;i<n;i++)//统计0 1
{
if(s[i]=='1')one++;
else zero++;
if(zero-one>0)//101
if(flag==1)//用于说明已经修改过了
{
flag=0;
count=zero;//count为当前前面0的个数,任意修改其一即可
zero--;
one++;
}
else
{
printf("%d",0);//不能取胜
return 0;
}
}
if(flag==0)//修改过
printf("%d",count);
else if(zero==one)printf("%d",zero);
else //zero<one
printf("%d",n);
return 0;
}