#include<iostream>
#include<queue>
#include<algorithm>
#define MAXNUM 30
using namespace std;
class Bag{ //在跳跃点解法时使用
public:
Bag(){
val = 0;
weight = 0;
}
public:
int val;
int weight;
friend bool operator < (Bag a,Bag b){
if(a.weight != b.weight)return a.weight > b.weight;
else return a.val < b.val;
}
};
Bag b[MAXNUM];
int n,c; //n为物品个数 ,c为物品价值
int m[MAXNUM][MAXNUM]; //m[i][j]意义:i为从 i ~ n的所有物品在背包容量为 j 时 的最优解
int W[MAXNUM],V[MAXNUM]; //W[i] 为 i 序号物品的重量, V[i]为序号为 i 物品的价值
int DP[MAXNUM];
void Initial(){
cout<<"please input the num of the things: "<<endl;
cin>>n;
cout<<"please input the capacility of the bag: "<<endl;
cin>>c;
for(int i = 1;i <= n;i++)
for(int j = 0;j <= c;j++)m[i][j] = 0;
cout<<"please input the
01背包【普通DP + 跳跃点解法 + 空间优化】
最新推荐文章于 2021-04-10 17:46:47 发布
本文深入探讨了01背包问题的解决策略,包括使用普通的动态规划方法,结合跳跃点优化算法,以及进一步的空间压缩技巧,旨在提高解题效率和内存利用率。
摘要由CSDN通过智能技术生成