标题:各位大佬,费心再来看看吧,上传结果又WA了。。。。。。
取消只看楼主
qiujiao
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2018-10-26
结帖率:0
 问题点数:0 回复次数:0 
各位大佬,费心再来看看吧,上传结果又WA了。。。。。。
问题描述
小鱼儿在一次探险途中发现了一个山洞,并且在这个山洞里找到了宝藏,可是小鱼儿发现想要把宝藏全部带走是不可能的(因为他只带了一个袋子),不过很快他就发现每个宝物旁边都有几个字,上面写着宝物的体积和价值,而且这些宝物可以分割成任意大小。小鱼儿想知道如何选取宝物,才能使带走宝物的价值最大。
输入
第一行有两个整数v和n,表示袋子的容量和宝物的数量。(0<n<=100,0<v<=10000)
接下来n行每行两个整数,分别表示宝物的体积和价值。
输出
在单独的一行中输出一个数,表示能够带走宝物的最大价值,结果保留两位小数。
输入样列
10 3
10 30
11 55
4 30
输出样例
60.00


#include <stdio.h>
#include <math.h>
#include <algorithm>
using namespace std;
int main()
{
    int a[100],b[100];
    double c[100],d[100],sum=0;
    int i,j,w,n;
    scanf("%d %d",&w,&n);
    for(i=0;i<n;i++)
    {
        scanf("%d %d",&a[i],&b[i]);
        c[i]=b[i]/(a[i]*1.0);
        d[i]=c[i];
    }
    sort(d,d+n-1);
    for(i=n-1;i>=0;i--){
        for(j=0;j<n;j++){
            if(c[j]==d[i]&&w>0){
                if(w>=a[j])
                    sum+=b[j];
                else
                    sum+=c[j]*w;
                w=w-a[j];
            }
        }
    }
    printf("%.2lf\n",sum);
}
搜索更多相关主题的帖子: 结果 价值 表示 sum for 
2018-12-22 21:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-492228-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.758800 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved