杨美人!的博客

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

背包问题--贪心

//贪心算法  --背包问题
#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
*/


阅读更多

扫码向博主提问

去开通我的Chat快问

杨美人

非学,无以致疑;非问,无以广识
  • 擅长领域:
  • algorithm
  • 数据结构
个人分类: 贪心
上一篇活动安排问题
下一篇POJ 1405(大数)
想对作者说点什么? 我来说一句

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

关闭
关闭