搜索
查看: 820|回复: 7
打印 上一主题 下一主题

题库中接水问题的疑惑

[复制链接]
跳转到指定楼层
楼主
发表于 2015-6-30 15:02:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题库中接水问题中,题目中给定的样例输入都能得到正确结果,可是提交之后显示答案错误,求大神指导
#include<iostream>
using namespace std;
void jieshui(int aa,int bb);
int a,b,num=0;
    int*p=new int[a];
    int*p1=new int[a];

int main()
{


    cin>>a>>b;         //a为节水人数,b为水龙头数
    for(int i=0;i<a;i++)
    {
                cin>>p[i];            //每个人节水节水所需时间
        }
        p1=p;
/*        for(int i=0;i<a;i++)
    {
                cout<<p1[i];           
        }*/
        jieshui(a,b);     //计算节水时间
        cout<<num;   //输出所需总时间
        //delete []p;
        //delete []p1;
    return 0;

}

void jieshui(int aa,int bb)
{
        int t;
        if(aa<=bb)
        {
                for(int i=0;i<aa-1;i++)
                {
                        int temp;
                        if(p[i]>p[i+1])
                        {
                                temp=p[i];
                                p[i]=p[i+1];
                                p[i+1]=temp;
                        }
                       
                 }
                 num+=p[aa-1];
                 return ;
        }
        else
        {
       
         for(int z=0;z<bb-1;z++)    //找出前bb个人中接水事件最少的
         {
                if(p1[z]<p1[z+1])
                {
                        t=p1[z];
                        p1[z]=p1[z+1];
                        p1[z+1]=t;
                }
               
         }
                        num+=p1[bb-1];
                        for(int i=0;i<bb;i++)
                        {
                            p[i]=p[i]-p1[bb-1];
                                if(p[i]==0)
                                {
                                 
                                         for(int j=i;j<aa;j++)//删除接完水的
                                         {
                                                 p[j]=p[j+1];
                                         }
                                                 aa--;       
                                }
                        }       
                        jieshui(aa,bb);
        }
}

沙发
 楼主| 发表于 2015-6-30 15:03:41 | 只看该作者
怎么回事,括号显示不出来
板凳
发表于 2015-9-25 14:22:51 | 只看该作者
不是很明白的说
有一个数据的答案是0。。。
地板
发表于 2015-10-12 17:15:40 | 只看该作者
我感觉是测试系统的问题,因为我去网上搜了测试数据,手动输入,都是对的。
但是上传就是不AC,我打算换个地方再试试
5#
发表于 2015-10-22 14:25:00 | 只看该作者
看下这个程序      应该很容易理解




#include<stdio.h>

int min(int *p,int m)              //找出最小值
{
    int x = 0;
    int i;
    int min = p[0];
   
    for(i = 1;i < m;i++)
    {
        if(p[i] < min)
        {
            min = p[i];
            x = i;
        }
    }
    return x;
}



int max(int *p,int m)             //找出最大值
{
    int x = 0;
    int i;
    int max = p[0];
   
    for(i = 1;i < m;i++)
    {
        if(p[i] > max)
        {
            max = p[i];
            x = i;
        }
    }
    return x;
}


int main()
{
    int i;
    int n;
    int m;
    int a;
    int b[100];
    int k;
   
    scanf("%d %d",&n,&m);
   
    for(i=0;i<m;i++)
    {
       scanf("%d",&b[i]);                         //m个水龙头
    }
   
    for(i = m;i<n;i++)
    {
        k = min(b,m);
        scanf("%d",&a);               
        b[k] += a;                       //每次加到最小的龙头上面
    }
   
    k = max(b,m);
    printf("%d",b[k]);           
   
    return 0;

}
6#
发表于 2015-10-22 14:26:41 | 只看该作者
怎么乱码啊   再试试


#include<stdio.h>

int min(int *p,int m)
{
    int x = 0;
    int i;
    int min = p[0];
   
    for(i = 1;i < m;i++)
    {
        if(p[i] < min)
        {
            min = p[i];
            x = i;
        }
    }
    return x;
}



int max(int *p,int m)
{
    int x = 0;
    int i;
    int max = p[0];
   
    for(i = 1;i < m;i++)
    {
        if(p[i] > max)
        {
            max = p[i];
            x = i;
        }
    }
    return x;
}


int main()
{
    int i;
    int n;
    int m;
    int a;
    int b[100];
    int k;
   
    scanf("%d %d",&n,&m);
   
    for(i=0;i<m;i++)
    {
       scanf("%d",&b[i]);
    }
   
    for(i = m;i<n;i++)
    {
        k = min(b,m);
        scanf("%d",&a);
        b[k] += a;
    }
   
    k = max(b,m);
    printf("%d",b[k]);
   
    return 0;

}
7#
发表于 2015-10-22 14:30:13 | 只看该作者
怎么回事      显示出来没  #include<stdio.h>

int min(int *p,int m)
{
    int x = 0;
    int i;
    int min = p[0];
   
    for(i = 1;i < m;i++)
    {
        if(p[i] < min)
        {
            min = p[i];
            x = i;
        }
    }
    return x;
}



int max(int *p,int m)
{
    int x = 0;
    int i;
    int max = p[0];
   
    for(i = 1;i < m;i++)
    {
        if(p[i] > max)
        {
            max = p[i];
            x = i;
        }
    }
    return x;
}


int main()
{
    int i;
    int n;
    int m;
    int a;
    int b[100];
    int k;
   
    scanf("%d %d",&n,&m);
   
    for(i=0;i<m;i++)
    {
       scanf("%d",&b[i]);
    }
   
    for(i = m;i<n;i++)
    {
        k = min(b,m);
        scanf("%d",&a);
        b[k] += a;
    }
   
    k = max(b,m);
    printf("%d",b[k]);
   
    return 0;

}
8#
发表于 2015-10-22 14:30:33 | 只看该作者
醉了  醉了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表