完全背包问题(二进制解法)

来源:互联网 发布:对等网络属于局域网吗 编辑:程序博客网 时间:2024/05/29 19:55


题目

有N件物品和一个容量为V的背包。第i件物品的重量是w[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量的最大重量。

基本思路

首先,我想分析一下这个题目大暴力时,复杂度为什么为N^2。如果大暴力,本题目的预算次数实际为pow(2,n)-1。
初等数学思路(大佬请忽略):
本题中一共给定n个物品,如果要放入1个物品时为N种;
如果要放入2个时候,需要从N个中取出A2N个物品;
所以该题目为N个物品从1到N的全排列的前N项和;
(PS:如果任意一个物品体积都大于背包体积时,所以存在所有物品都不选择的坑)
所以由初等数学知识可知,该题目的实际运算次数为pow(2,n)-1;
二进制思路:先上思路图


首先需要先解释一下图片,图片照片中的红色表示选择a[i-1]位置的物品,绿色则表示不选择。
再进行思路解释,物品中共有pow(2,n)-1个线段。每个线段回溯到顶端,就为一种方法解决方法,如果把要与不要,分别抽象为1和0,则实现了控制是否收取本位物品的方法,在进行判断每次加法之后是否存在一个大数,记录大数就可以,当不满足是跳过就可以。
(PS:当出现问题拓展的时候,可以记录满足条件时候的十位数就可以了)。
////  main.cpp//  01背包问题(二进制)//  Created by MaLker on 2017/3/2.//  Copyright © 2017年 MaLker. All rights reserved.//#include <iostream>#include <math.h>#include <algorithm>using namespace std;int main(int argc, const char * argv[]) {    int n,a[10],biger;    while (scanf("%d%d",&n,&biger)!=EOF) {        for (int i=0; i<n; i++) {//我是输入的数据            scanf("%d",&a[i]);        }        int t = pow(2, n)-1/*计算的次数,并且存储*/,midi,sum = 0,max1 = 0;        for (int i = 1 ; i < t; i++) {            midi = i/*i的中间值,防止i被污染*/;            for (int tm = 0; tm < n; tm++) {                if ((midi>>1)&1) {/*按位运算取对应物品位置的取舍*/                    sum+=a[tm];                }                if(sum <= biger)                max1 = max(max1,sum);/*筛选判断*/                else                    continue;/*最水的优化*/            }            sum=0;/*初始化相应位置的求和*/        }        printf("%d\n",max1);    }    return 0;}//if((i>>1)&1)




2 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 现代黑白灰装修效果图 80平房屋装修效果图 客厅墙面装修效果图 110平方装修效果图 手机店装修实体图 小洗手间装修效果图 不吊顶的客厅装修图 地中海风格装修效果图 平房客厅装修效果图 孕婴店装修效果图 小户型厨房装修效果图 联排别墅装修效果图 80平方的房子装修图 90平方房屋设计图 小平米装修效果图 新房子装修效果图 室内简单装修效果图大全 儿童卧室装修效果图小户型 小户型装修效果图大全2015图片 楼中楼装修效果图小户型 三室两厅装修效果图现代简约 现代装修风格效果图客厅 简约客厅装修实景图大全 90平方米简约装修效果图 190平方房子装修效果图 8平米卫生间装修效果图 100平方房屋装修效果图 四室两厅两卫装修效果图 130平米三室两厅装修效果图 八十平米小户型设计效果图 三室一厅一厨一卫装修效果图 七十平米小户型装修效果图 200平方米的房子设计图 75平方两室一厅装修效果图 113平方三室两厅装修效果图2015 85平米两室一厅装修效果图 四十平米小户型装修效果图 三房两厅两卫装修效果图 现代简约客厅装修效果图 3平方米卫生间装修效果图 主人房卫生间装修效果图