背包问题(最大装载价值)
问题:给定一个载重量为M的背包,考虑n个物品,其中第i个物品的重量 wi ,价值vi (1≤i≤n),要求把物品装满背包,且使背包内的物品价值最大。
#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;struct bag{int w; //物品的重量int v; //物品的价值double c; //单位重量的价值,v/w
}a[1001];bool cmp(bag a, bag b){return a.c >= b.c;
}double knapsack(int n, bag a[], double c){double cleft=c;int i=0;double b=0;while(i<n && a[i].w<cleft){cleft -= a[i].w;
b += a[i].v;
i++;
}
//装满背包的剩余空间
if (i<n)
b += 1.0*a[i].v*cleft/a[i].w;
return b;
}
int main()
{int i;for(i=0;i<7;i++){cin>>a[i].w>>a[i].v;a[i].c=a[i].v/a[i].w;}sort(a,a+i,cmp);cout<<"最大价值为:"<<knapsack(7,a,20);return 0;
}
背包问题(最大装载价值)相关推荐
- 用贪心算法解背包问题(装载问题)
题目描述 给定一个最大载重量为M的卡车和N种食品,有食盐,白糖,大米等.已知第 i 种食品的最多拥有Wi 公斤,其商品价值为Vi元/公斤,编程确定一个装货方案,使得装入卡车中的所有物品总价值最大. 题 ...
- 算法设计 - 01背包问题
学习来源 [自制]01背包问题算法动画讲解_哔哩哔哩_bilibili 问题描述 有N件物品,第i件物品的重量是w[i],价值是p[i]. 有一个背包,背包的承重是W. 求解:将哪些物品装入背包可获得 ...
- 算法分析与设计(一)——0-1背包问题
文章目录 1 三种背包问题详解 2 最值问题 1.1 0-1背包问题 1.2 零钱兑换 1.3 一和零 1.4 最后一块石头的重量 3. 恰好背包容量问题 4. 排列组合问题 4.1 目标和 4.2 ...
- 动态规划——背包问题(01背包问题)
动态规划--背包问题(01背包问题) 01背包问题(求最大价值): 问题优化 01背包问题(求方案数): 动态规划--背包问题(01背包问题) 01背包问题(求最大价值): 有N件物品和一个最多能背重 ...
- 背包问题的多项式时间近似解
背包问题的多项式时间近似解 一些概念 背包问题的伪多项式时间算法 强NP难问题和FPTAS 一些概念 ∏\prod∏ 是一个NP难问题的优化问题 f∏f_{\prod}f∏ 是这个优化问题的目标函数 ...
- 前人对ACM学习的一些总结
freopen("in.txt","r",stdin); 一:知识点 数据结构: 1,单,双链表及循环链表 2,树的表示与存储,二叉树(概念,遍历)二叉树 ...
- ACM-ICPC 知识点 经验
一:知识点 数据结构:1,单,双链表及循环链表2,树的表示与存储,二叉树(概念,遍历)二叉树的 应用(二叉排序树,判定树,博弈树,解答树等)3,文件操作(从文本文件中读入数据并输出到文本文 件中)4, ...
- ACM/ICPC竞赛
备战ACM资料 一:知识点 数据结构: 1,单,双链表及循环链表 2,树的表示与存储,二叉树(概念,遍历)二叉树的 应用(二叉排序树,判定树,博弈树,解答树等) 3,文件操作(从文本文件中读入数据并输 ...
- 牛人的ACM经验 (转)
牛人的ACM经验 (转) 一:知识点 数据结构: 1,单,双链表及循环链表 2,树的表示与存储,二叉树(概念,遍历)二叉树的 应用(二叉排序树,判定树,博弈树,解答树等) 3 ...
- 五大算法思想(三)回溯法及常见例子
文章目录 一.理论基础 1.1 基本策略 1.2 使用步骤 1.3 经典例子 二.常见例子 2.1 八皇后问题 2.2 装载问题 2.3 批量作业调度问题 2.4 背包问题 一.理论基础 回溯法作 ...
最新文章
- 解决Jetty Maven Plugin:Please initialize the log4j system properly(转)
- Linux TCP队列相关参数的总结
- 四种利用C#播放声音的方法
- P2519-[HAOI2011]problem a【dp】
- 【系统架构】小型电商网站的架构(一)
- 苹果电脑更改sd卡只读_SD内存卡禁止写入只读怎么办?另类SPI模式修复坏卡
- Nmap列举远程机器开放的端口
- mysql 上周时间_mysql 获取上周1到周日的时间
- Navicat 恢复mysql psc 备份文件
- 六键无冲和全键无冲哪个好_键盘冷知识:全键无冲到底是什么?
- unbuntu samba共享文件夹
- 教你用Python感受量子霸权
- MATLAB中dither抖动函数的用法
- 雷神simplest_ffmpeg_player解析(三)
- 修改jsp代码之后浏览器报500错误问题以及解决方法
- [h5棋牌项目]-05-重载配置导致的内存泄露
- PHP中strtotime函数的坑
- oracle中spool卸数,数据卸载--spool的使用
- 前端数组json遍历3种方式总结
- 大型软件是否占用计算机内存,软件应用占用内存怎么查看