啊哈磊_编程从这里起步
标题:
题库中接水问题的疑惑
[打印本页]
作者:
linxian_1990
时间:
2015-6-30 15:02
标题:
题库中接水问题的疑惑
题库中接水问题中,题目中给定的样例输入都能得到正确结果,可是提交之后显示答案错误,求大神指导
#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);
}
}
作者:
linxian_1990
时间:
2015-6-30 15:03
怎么回事,括号显示不出来
作者:
野生妹抖酱
时间:
2015-9-25 14:22
不是很明白的说
有一个数据的答案是0。。。
作者:
stshihia
时间:
2015-10-12 17:15
我感觉是测试系统的问题,因为我去网上搜了测试数据,手动输入,都是对的。
但是上传就是不AC,我打算换个地方再试试
作者:
神秘博士
时间:
2015-10-22 14:25
看下这个程序 应该很容易理解
#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;
}
作者:
神秘博士
时间:
2015-10-22 14:26
怎么乱码啊 再试试
#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;
}
作者:
神秘博士
时间:
2015-10-22 14:30
怎么回事 显示出来没 #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;
}
作者:
神秘博士
时间:
2015-10-22 14:30
醉了 醉了
欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/)
Powered by Discuz! X3.2