0
已解决
包涵宇
中级天翼
中级天翼
题目描述 Description
卡卡西和小朋友们要乘船过河了,港口有很多条船可以租到,并且之间没有区别,每条船的出租费用也是一样的。但是一条船最多只能乘坐两个人,且乘客的总重量不能超过船的最大承载量。我们要找出可以安置所有小朋友的最小船数以降低总的租船费用,卡卡西很快的写出了一个程序,读入船的最大承载量、旅客数目和每位旅客的重量,计算出要安置所有同学必须的最少的船的数目。
输入描述 Input Description
输入数据有两行。第一行两个整数w和n,用空格分隔,分别表示一条船的最大承载量和人数;第二行中每个数据是每个人的重量,也是整数,数据间用空格分隔。
输出描述 Output Description
最小船数。
样例输入 Sample Input
【输入样例一】
85 6
5 84 85 80 84 83
【输入样例二】
100 5
50 50 90 40 60
样例输出 Sample Output
【输出样例一】
5
【输出样例 二】
3
数据范围及提示 Data Size & Hint
3≤w≤200,3≤n≤300 每位乘客的重量都不大于船的承载量。
数据来源 Source
合肥市33届信息学竞赛第三题
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,a,c[10000],s=0;
cin>>a>>n;
for(int i=0;i<n;i++)cin>>c[i];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
if(i!=j&&c[i]+c[j]<=a){
for(int l=j;l<n-1;l++)
c[l]=c[l+1];
n--;
}
s++;
}
cout<<s;
return 0;
}
25分
加了一个sort,20分
这是为什么!!!
0
已采纳
王雨婷
高级守护
高级守护
包涵宇同学,你好!
这是核心代码。
请在主函数外定义数组c[301]
或在主函数内请记得清零
望采纳!
//freopen ("ship.in","r",stdin);
//freopen ("ship.out","w",stdout);
int n,x,s=0;
cin>>x>>n;
for (int i=1;i<=n;i++)
cin>>c[i];
sort (c+1,c+n+1);
int a=1;
int b=n;
while (a<=b)
{
if (c[a]+c[b]<=x)
{
a++;
b--;
s++;
}
else
{
b--;
s++;
}
}
cout<<s;
0
董子墨
中级天翼
中级天翼
0