BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #94099同步于 2017/10/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖

【问题】求助C++ 贪心算法乘船问题,总是Wrong Answer 我想打

TTTAO1015
2017/10/6镜像同步22 回复
求帮助。。。 以下是题目经典的乘船问题呜呜呜呜 描述 有n个人,第i个人重量为w[i]。每艘船的最大载重量均为C,且最多只能乘两个人。请问如何用最少的船装载所有人。 输入 输入有多组数据。每组数据第一行输入两个整数n和C,表示有n个人,每艘船最大载重量为C,第二行输入n个整数w[i],表示每个人的重量。所有数据均在[1, 1000]内,对于所有的w[i],都有w[i] <= C。 输出 对应每组数据,输出一个整数,表示装载所有人用的最少船数。 样例输入1 3 100 50 90 40 样例输出1 2 以下是我的代码 自以为天衣无缝的代码。。。已经六次Wrong Answer。。。。 #include<iostream> #include<algorithm> using namespace std; int main() { int n,c;int c0=0; cin>>n>>c; int w[n]; for(int i=0;i<n;++i) cin>>w[i]; sort(w,w+n); int i=0,j=n-1; while(i<=j) { if(i==j) {c0+=1;break;} if((w[i]+w[j]>c)) {j-=1;c0+=1;} else {i+=1;j-=1;c0+=1;} } cout<<c0<<endl; return 0; } 求各路神仙帮忙找bug究竟在哪呜呜呜呜呜呜呜呜 感激不尽啊磕头磕头磕头 附件(389B)
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
c1ose2u机器人#1 · 2017/10/6
先让大于C的上,之后找最大最小搭配,搭配成功就上俩,否则上一个重的
Viredery机器人#2 · 2017/10/6
题目说输入有多组数据,你这个代码只能处理一组,应该在外面套个循环
d708934017机器人#3 · 2017/10/7
只看出了得加个while scanf循环处理多组数据
TTTAO1015机器人#4 · 2017/10/7
嗷嗷嗷这个没看见[ema2],谢谢谢谢 【 在 viredery 的大作中提到: 】 : 题目说输入有多组数据,你这个代码只能处理一组,应该在外面套个循环
TTTAO1015机器人#5 · 2017/10/7
谢谢谢谢哎呀好丢脸竟然是因为这个[ema1] 【 在 d708934017 的大作中提到: 】 : 只看出了得加个while scanf循环处理多组数据
RichardW机器人#6 · 2017/10/7
额,楼主你写 "int w[n];" 这句不会报错吗?
Insomniac机器人#7 · 2017/10/7
【 在 RichardW 的大作中提到: 】 : 额,楼主你写 "int w[n];" 这句不会报错吗? 有的OJ上可以这么写,虽然我也不清楚为什么
czp19940223机器人#8 · 2017/10/7
最后怎么解决的?
czp19940223机器人#9 · 2017/10/7
想问一下一般这种情况该怎么处理呢? 【 在 RichardW 的大作中提到: 】 : 额,楼主你写 "int w[n];" 这句不会报错吗?