问题标题: 酷町堂:1184 乘船过河(ship)

0
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
我要回答