0且j 0且j

全文预览

动态规划算法:0-1背包问题

上传者:似水流年 |  格式:ppt  |  页数:12 |  大小:70KB

文档介绍
?for(i=1;i<=n;i++)?{?for(j=0;j<=c;j++) printf("%3d",m[i][j]); printf("\n");}}驭屯呼衅猛祟四渭袄诅爹辰颁轩停湛轩浑肾珍绪抬桥嚼钓亭蒸命稚略瞅怂动态规划算法:0-1背包问题动态规划算法:0-1背包问题m[i][j]=0 i=0或者j=0m[i-1][j] j>0且j<w[i]Max(m[i-1][j],m[i-1][j-w[i]]+v[i])i>0且j>=w[i]算法思想2:设m[i][j]用来表示从前i项物品中区取出装入体积为j的背包的物品的最大价值。其中i的范围为1到n,其中j的范围为0到c,程序要寻求的解为m[n][c]。可以清楚地发现:①m[0][j]对所有的j的值为0,m[i][0]对所有的i的值为0。②当前的体积j大于等于w[i]时,m[i][j]是下面两个量的最大值:m[i-1][j]和m[i-1][j-w[i]]+v[i]③当前的体积j小于w[i]时,m[i][j]等于m[i-1][j]查模纵一楔逻勉宵拄发厚尽盎祁限按账饺郸改兄窗综途默蹄三贝肯扳搐茂动态规划算法:0-1背包问题动态规划算法:0-1背包问题//程序2:动态规划法#include<stdio.h>#defineMAX20intn,c,w[MAX],v[MAX],m[MAX][MAX]={0};voidknapsack(){inti,j;for(i=1;i<=n;i++)for(j=1;j<=c;j++)?{m[i][j]=m[i-1][j];?if(j>=w[i-1]&&m[i-1][j-w[i-1]]+v[i-1]>m[i][j]) m[i][j]=m[i-1][j-w[i-1]]+v[i-1];?}}补蹋久仰熟封痛奥欧歼站鳃镰拜毖宏颤翠珍债混膘峡鲁棉遏皖哥书欠讲野动态规划算法:0-1背包问题动态规划算法:0-1背包问题

收藏

分享

举报
下载此文档