给定n种物品和一个背包。物品i的重量是wi,其价值为pi,背包的容量为C。应如何选择装入背包的物品,使得装入背包中物品的总价值最大?
2.问题的分析根据题目所给的信息可知就是在wi<c时可以放入物品,并且结合要求价值最大这一点来进行挑选,例如:
共有5种物品,即n=5;背包容量c=30;各物品的重量 wi[5]={15,5,6,12,9};各物品的价值为: p[i]={25,16,14,13,36};
所以所求背包中的物品的价值最大就是 while(wi<=c) p=max.当wi>c,退出,并且输出最大的价值p.
3.思路由于所给的信息较多,所以考虑用类来进行封装,这样看起来比较有清晰而且有条理。
源代码如下:
#include "stdafx.h"
#include<iostream>
using namespace std;
class Bag
{
private :
int c;
int n;
int *w;
int *p;
int *x;
int cw;
int cv;
int bestv;
int *bestx;
public:
Bag();
~Bag();
void Output();
void Set(int n);
void Input();
void Ba