1、基本题二:0 1 背包问题一、实验目的与要求1、掌握 01 背包问题的回溯算法;2、进一步掌握回溯算法;二、实验题:给定 n 种物品和一背包。物品 i 的重量是 wi,其价值为 vi,背包的容量为 C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?三、实验源码#include #include using namespace std; class PackBackTrack protected: vector m_p; /N 个背包的价格 vector m_w; /N 个背包的重量 int m_c; /背包的容量 int m_num; /物品的件数 int bestValue;
2、/背包最大价值 int currentValue; /当前背包中物品的价值 int currentWeight; /当前背包中物品的重量 private: void BackTrack(int depth) if(depth = m_num) /达到最大深度 if(bestValue currentValue =0; currentWeight =0; /获取背包内物品的最大值 int GetBestValue() BackTrack(0); return bestValue; ; int main(void) /测试程序 int n; int c; cout n; cout c; vector w(n); vector p(n); cout wi; cout pj; PackBackTrack pack(p,w,c,n); int bestValue = pack.GetBestValue(); cout “背包内的物品的最大价值为:“ bestValue endl; return 0; 四、程序截图