zoukankan      html  css  js  c++  java
  • 背包问题

    代码一:

    //背包问题
    #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
  • 相关阅读:
    VirtualBox Linux服务vboxservicetemplate
    oracle 11g常用命令
    haproxy dataplaneapi
    使用jproflier 分析dremio
    cube.js 支持oceanbase 的mysql driver
    fastdfs 集群异常修复实践
    使用jHiccup 分析java 应用性能
    dremio mysql arp 扩展
    cube.js graphql 支持
    apache kyuubi 参考架构集成
  • 原文地址:https://www.cnblogs.com/helloworld2019/p/10357538.html
Copyright © 2011-2022 走看看