背包问题
2015-09-09 16:36
302 查看
背包问题需要用到动态规划的思想
const int GOODS_NUM = 5; int g_goodsValue[GOODS_NUM] = {6, 3, 6, 2, 5}; int g_goodsWeight[GOODS_NUM] = {2, 4, 7, 5, 3}; int g_maxValue[10][5]; //剩余空间为i时,装j件物品能获得最大的价值 int GetMaxValue(int space, int num) { int res; if(g_maxValue[space][num] != -1) { res = g_maxValue[space][num]; } else if(num == 0) //如果仅有1件物品 { if(space > g_goodsWeight[num]) { res = g_goodsValue[num]; } else { res = 0; } } else if((num != 0) && space > g_goodsWeight[num]) //如果剩余的空间够装下这件物品 { res = max(g_goodsValue[num] + GetMaxValue(space - g_goodsWeight[num], num - 1), GetMaxValue(space, num - 1)); } else { res = GetMaxValue(space, num - 1); } g_maxValue[space][num] = res; //做备忘录,这里不太理解 return res; } int main() { //初始化 for(int i = 0; i <= 10; i++) for(int j = 0; j < 5; j++) g_maxValue[i][j] = -1; //剩余空间为10,5件物品(物品编号0-4),所能取得的最大价值 std::cout << GetMaxValue(10, 4) << std::endl; getchar(); return 0; }
相关文章推荐
- 关于定制RadioGroup样式之填坑记,记录而已
- 【bzoj1028】【JSOI2007】【麻将】
- sqlloader数据量大容易中断以及数据出现丢失情况
- OpenCV学习笔记(6)基于 VC+OpenCV+DirectShow 的多个摄像头同步工作
- 新建webklogic数据源激活更改期间出现Cannot load drivaer class:com.sybase.jdbc3.jdbc.SybDriver
- DRAM,SRAM,SDRAM的关系与区别
- chmod的相关操作
- hdu3231 拓扑序
- mysql性能测试(索引)
- Matlab 曲线拟合工具箱 cftool
- Winform 获取Win7 UAC 管理员权限
- 解决secureCRT登陆centOS显示中文乱码
- JavaScript移动端模拟alert()方法
- 译:Android Configuration(Android 配置)
- hdu 4324 Triangle LOVE(拓扑排序)
- iPhone自带click点击效果用css去除
- 从安全攻击实例看数据库安全(三)数据库攻击原理分析
- smarty模板中计算数组长度
- python2.7学习笔记(10) ——面向对象高级编程
- Zabbix禁止重装