杨美人!的博客

世界上所有的不幸,都是当事者能力不足造成的

背包问题--贪心
//贪心算法  --背包问题
#include <iostream>
#include <algorithm>
#include <stdio.h>

using namespace std;

struct object
{
    double w;
    double v;
    double r;
}arr[20];

bool cmp(const object& a,const object& b)
{
    return a.r>b.r;             //按照单位重量的价值进行排序
}

int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=0;i<n;i++)
    {
        cin>>arr[i].w>>arr[i].v;
        arr[i].r=arr[i].v*1.0/arr[i].w;
    }
    sort(arr,arr+n,cmp);
    double sum=0;
    double maxv=0;
    for(int i=0;i<n;i++)
    {
        if(sum+arr[i].w<=m)
        {
            sum+=arr[i].w;
            maxv+=arr[i].v;
        }
        else
        {
            maxv+=arr[i].r*(m-sum);
            break;
        }

    }
    cout<<maxv<<endl;
    return 0;
}
/*
input
3 5
4 7
3 3
2 4
output
9.25
*/


阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

背包问题--贪心

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭