算法设计 || 第9题:0-1背包问题&动态规划(手写例题+源代码)

(一)背包问题知识点: 

算法设计 || 第9题:0-1背包问题&动态规划(手写例题+源代码)_第1张图片

(二)经典测试题:

已知n=8种,每种一件。背包最大负载M=110。
重量w和价值v如下表,怎样装价值最大?贪心算法
求X[N]最优解,写出求解过程;强化为0/1背包问
题,编程求出X[N]的值。算法设计 || 第9题:0-1背包问题&动态规划(手写例题+源代码)_第2张图片


#include 
#include 
 
#define M 110//背包容量 
#define N 8 //物品数量 

int Max(int w[] , int v[]){
	int dp[N+1][M+1];//0-N个物品,背包容量为M 
	int i,j; 
	memset(dp,0,sizeof(dp));
	for(i=1;i<=N;i++){
		for(j=1;j<=M;j++){
			if(jb?a:b; //可以用max 
			}
	
		}
	}
	
	for(i=0;i<=N;i++){
		for(j=0;j<=M;j++){
			printf("%d ",dp[i][j]);
		}
		printf("\n");
	}
	return dp[i][j];	
} 

int main(void){
	int w[9] = {0,1,11,21,23,33,43,45,55};
	int v[9] = {0,11,21,31,33,43,53,55,65};
	int result = Max(w,v);
	printf("Minimum Multiplications: %d\n", result);
	return 0;
}

算法设计 || 第9题:0-1背包问题&动态规划(手写例题+源代码)_第3张图片

算法设计 || 第9题:0-1背包问题&动态规划(手写例题+源代码)_第4张图片 最大价值量为159,由结果推得,x[N]依次为1,1,1,1,1,1,0,0

(ง •_•)ง远离内耗,不浪费时间,加油呀!---小毛同学

你可能感兴趣的:(算法设计与分析(C语言),c#,c语言,笔记,算法)