码迷,mamicode.com
首页 > 其他好文 > 详细

背包问题

时间:2019-02-09 17:42:53      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:ret   spl   bre   pac   iterator   img   ide   sed   pre   

代码一:

技术图片
//背包问题
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct node{
    double w;
    double p;
    double t;
};

int cmp(const node &a,const node &b){
    return a.t>b.t;
}

int main(){
    vector<node> str;
    double weight,price=0;
    double wei=0;
    node b;
    int n;
    while(cin>>n>>weight){
        for(int i=0;i<n;i++)
        {
            cin>>b.p>>b.w;
            b.t=b.p/b.w;
            str.push_back(b);
        }
        sort(str.begin(),str.end(),cmp);
        vector<node>::iterator it;
//        for(it=str.begin();it!=str.end();it++)  cout<<(*it).p<<" "<<(*it).w<<endl;
        for(it=str.begin();it!=str.end();it++){
        if(wei+(*it).w<=weight) {
            wei+=(*it).w;
            price+=(*it).p;
        }     
        }
        cout<<price<<endl;
    }
}
View Code

测试数据:结果为220

技术图片
5
50
60 10
100 20
120 30
30 10
40 20
View Code

代码二:结果为240

技术图片
//背包问题
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct node{
    double w;
    double p;
    double t;
};

int cmp(const node &a,const node &b){
    return a.t>b.t;
}

int main(){
    vector<node> str;
    double weight,price=0;
    double wei=0;
    node b;
    int n;
    while(cin>>n>>weight){
        for(int i=0;i<n;i++)
        {
            cin>>b.p>>b.w;
            b.t=b.p/b.w;
            str.push_back(b);
        }
        sort(str.begin(),str.end(),cmp);
        vector<node>::iterator it;
//        for(it=str.begin();it!=str.end();it++)  cout<<(*it).p<<" "<<(*it).w<<endl;
        for(it=str.begin();it!=str.end();it++){
            if(wei>=weight) break;
        if(wei+(*it).w<=weight) {
            wei+=(*it).w;
            price+=(*it).p;
        }     else {
            price+=(*it).p*(weight-wei)/(*it).w;
            wei=weight;
        }
        }
        cout<<price<<endl;
    }
}
View Code

 

背包问题

标签:ret   spl   bre   pac   iterator   img   ide   sed   pre   

原文地址:https://www.cnblogs.com/helloworld2019/p/10357538.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!