一切困难都能打倒我 2023-01-31 09:58 采纳率: 92.9%
浏览 28
已结题

C语言,男女排队程序纠错

运动会快到了,小码哥班里组织彩排,小码哥作为体委不得不担当同学排队列的大任。为了让男女分配均匀,小码哥想知道队列中男女生人数一样的子序列(连续的)最多多长。
样例
输入:
9
0 1 0 0 0 1 1 0 0
输出:
6
我的程序(输入样例得出的是2,求指点):

#include<stdio.h>
int main() 
{ 
int a[100001]={0},b[100001]={0},num1=0,num2=0,n=0,i=0,j=0,k=0,t=0,l=0;
scanf("%d ",&n);
for(;i<n;i++)
{
    scanf("%d ",&k);
    a[i]=k;
}
//输入数据
for(i=0;i<n;i++)
{
    for(j=i;j<n;j++)
    {
        if(a[j]==0)
        t=t+1,num1++;
        if(a[j]==1)
        t=t-1,num2++;
        if(t==0)
        l=num1+num2;
    }
b[i]=l;
}
//挨个找出符合条件的子列
l=b[0];
for(i=0;i<n;i++)
{
    if(b[i]>l)
   l=b[i];
}
//比较得出最长子列
printf("%d",l);
//输出
    return 0; 
}

    
    
  • 写回答

3条回答 默认 最新

  • 关注
    
    #include<stdio.h>
    int main() 
    { 
    int a[100001]={0},b[100001]={0},num1=0,num2=0,n=0,i=0,j=0,k=0,t=0,l=0;
    scanf("%d ",&n);
    for(;i<n;i++)
    {
        scanf("%d ",&k);
        a[i]=k;
    }
    for(i=0;i<n;i++)
    {
        num1=0;
        num2=0;
        t=0;
        l=0;
        for(j=i;j<n;j++)
        {
            if(a[j]==0)
            t=t+1,num1++;
            if(a[j]==1)
            t=t-1,num2++;
            if(t==0)
            l=num1+num2;
        }
    b[i]=l;
    }
    l=b[0];
    for(i=0;i<n;i++)
    {
        if(b[i]>l)
       l=b[i];
    }
    if(l!=0)
        printf("%d",l);
    else
        printf("0");
        return 0; 
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月9日
  • 已采纳回答 2月1日
  • 创建了问题 1月31日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效