/*****************************************************************************
0/1背包问题(物体不可分割)
问题重述:对于给定的载重量为M的背包,以及n个重量为wi、价值为pi的物体,1<=i<=n,
要求用动态规划法求把物体装满背包,且使背包内的物体价值最大的解。
/*****************************************************************************/
#include<iostream>
#include<iomanip>
#define N 20 //最多物体个数
#define M 100 //最大背包载重量
using namespace std;
int main(){
/*函数声明*/
void create_wuti(int T[], int t);
void show_wuti(int T[], int t);
int knapsack_dynamic(int optp[][M + 1],int w[],int p[],int n,int m, bool x[]);
void show_optp(int optp[][M + 1], int n, int m);
int w[N + 1]; //物体的重量
int p[N + 1]; //物体的价值
bool x[N + 1]; //解向量
int optp[N + 1][M + 1]; //物体装背包过程的状态
int n, m;
cout << "请输入物体个数n(不超过20)及背包载重量m(100)分别为:";
cin >> n >> m;
cout << "\n请输入物体的重量:";
create_
背包问题(物体不可分割)
最新推荐文章于 2022-02-14 18:42:49 发布