zoukankan      html  css  js  c++  java
  • 17-又见01背包

    /*                                        又见01背包
    时间限制:1000 ms  |  内存限制:65535 KB
    难度:3

    描述
            有n个重量和价值分别为wi 和 vi 的 物品,从这些物品中选择总重量不超过 W
        的物品,求所有挑选方案中物品价值总和的最大值。
          1 <= n <=100
          1 <= wi <= 10^7
          1 <= vi <= 100
          1 <= W <= 10^9

    输入
        多组测试数据。
        每组测试数据第一行输入,n 和 W ,接下来有n行,每行输入两个数,代表第i个物品的wi 和 vi。
    输出
        满足题意的最大价值,每组测试数据占一行。
    样例输入

        4 5
        2 3
        1 2
        3 4
        2 2

    样例输出

        7

    来源
        飘谊系列
    上传者
        TC_张友谊
    */
    //http://www.cnblogs.com/chenzhiyin/p/5513258.html
    //由于重量太大了,开数组绝对内存超了,有观察到价值很小,故可以转化思路反过来求,
    //动态规划分析:最少要拿总价值一定,求所拿的最小质量(根据"最大能拿总重量一定,求能拿的最大价值"原理推导)

      

    #include <iostream>
    #include <cstring>
    using namespace std;
    int dp[10004];
    int w[105];
    int v[104];
    
    int main(){
    	int n, W;
    	while(cin >> n >> W){
    		memset(dp, 0x3f3f3f3f, sizeof(dp));//求最小,设为最大 
    		dp[0] = 0;
    		int sum = 0;
    		for(int i = 0; i < n; i++){
    			cin >> w[i] >> v[i];
    			sum += v[i];   			//为后面提供可能的最大价值 
    		}	
    		for(int i = 0; i < n; i++){
    			for(int j = sum; j >= 1; j--){
    				if(j >= v[i]){
    					dp[j] = dp[j - v[i]] + w[i] < dp[j] ? dp[j - v[i]] + w[i] : dp[j]; 
    				}
    				else{  //如果j < v[i]即j的价值小于i的价值,如果dp[j] > w[i]则需要跟新dp[j] 
    					dp[j] = dp[j] > w[i] ? w[i] : dp[j];					
    				}
    			}
    		}
    		for(int i = sum; i >= 0; i--){
    			if(dp[i] <= W){  //从最大价值搜索,找到该价值所需要的最小质量小于等于Wshi  
    				cout << i << endl;
    				break;
    			}
    		}
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    Window上编译最新版libCef(Branch 2704)(转载)
    在hue 使用oozie sqoop 从mysql 导入hive 失败
    hive 支持更新
    基于Hadoop生态圈的数据仓库实践 —— 环境搭建(三)笔记
    修改CENTOS7的网卡名(将网卡ens33修改为我们在centos6中常见的eth0)
    config network name
    Java服务部署规范(内部使用)
    MongoDB干货系列1-定期巡检之Mtools
    mongodb validation--像关系型数据库表去使用mongodb
    ntp 服务导致kudu集群不可用
  • 原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/7429687.html
Copyright © 2011-2022 走看看