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;

}

全部评论
抱歉,我知道自己哪里错了,最后else if(zero==one)printf("%d",zero);这应该输出n的,想错了
1 回复 分享
发布于 02-10 14:36 安徽

相关推荐

不愿透露姓名的神秘牛友
昨天 12:23
点赞 评论 收藏
分享
07-07 17:06
已编辑
深圳技术大学 golang
点赞 评论 收藏
分享
能干的三文鱼刷了10...:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-15 17:17
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务