动态规划之背包问题
来源:互联网 发布:紫色水离子淘宝店 编辑:程序博客网 时间:2024/06/11 23:50
修改于2016年5月8日 13:14
这么长时间了,终于对背包差不多了解了,这个是01背包问题,里面的最主要的还是找出状态转移方程。动态规划是运筹学的一个分支,是求解决策过程最优化的数学方案。最优化原理,把多个阶段过程转化为一系列单阶段的问题,逐个求解。它里面包含两个重要的性质——最优子结构和重叠子问题
#include <stdio.h>// 容量是10个void backpack_01(int *w,int *v,int (*max)[11]){ int i = 0; int j = 0; for(i = 0; i <= 10; i++){ if(i >= w[0]){ max[0][i] = v[0]; } } for(i = 1; i < 5; i++){ for(j = 0; j <= 10; j++){ if(j > w[i] && ((max[i-1][j-w[i]] + v[i]) > max[i-1][j])){ max[i][j] = max[i-1][j-w[i]] + v[i]; }else{ max[i][j] = max[i-1][j]; } }//end for 2 }//end for 1}void print_backpack_01(int (*max)[11]){ int i = 0; int j = 0; for(i = 0; i < 5; i++){ for(j = 0; j <= 10; j++){ printf("%5d ",max[i][j]); }//end for 2 printf("\n"); }//end for 1}int main(int argc,char *argv[]){ int w[5] = {2,2,6,5,4}; int v[5] = {6,3,5,4,6}; int max[5][11] = {0}; backpack_01(w,v,max); print_backpack_01(max); return 0;}
演示结果
0 0
- 动态规划之背包问题
- 动态规划之背包问题
- 动态规划之背包问题
- 动态规划之背包问题
- 动态规划之背包问题
- 动态规划之背包问题
- 动态规划之背包问题
- 动态规划之背包问题
- 动态规划之背包问题
- 动态规划之背包问题
- 动态规划之背包问题
- 动态规划之背包问题
- 动态规划之背包问题
- 动态规划之背包问题
- 动态规划之背包问题
- 动态规划之背包问题
- 动态规划之背包问题
- 动态规划之背包问题
- [C++杂记] char *str会默认为const char *str
- VIM键盘映射 (Map)
- 首页-样样好商城团购网-淘宝网
- maven项目管理总结(二)配置文件及依赖管理
- IOS通知设置
- 动态规划之背包问题
- Python中re的match、search、findall、finditer区别
- listview和gridView中findViewWithTag的使用
- 高效vim插件
- Linux显示计算次数的结果
- 博客园 闪存 首页 新随笔 联系 管理 订阅 订阅 随笔- 65 文章- 2 评论- 23 用C#.NET调用Java开发的WebS
- FileZilla Server设置虚拟目录
- char*,string,CString,int,char[]之间的转换
- spring注解事务