0-1背包问题(动态规划)

0-1背包问题,在动态规划方面有"Hello world"的地位。

输入:

输入种类数目n,背包最大容量m;每个种类的物品只有1个;

接下来依次输入物品的重量和价值;

输出:

输出最大可能的价值和;

#include
#include
using namespace std;

int n,m,value[3500],weight[3500],ans[13001]= {0};

int main() {
	cin >>n>>m;//输入物品的种类 和背包最大容量
	for (int i=0; i>weight[i]>>value[i];
	//完成信息的读入;
	//假设第i个以前的已经放好了
	for (int i=0; i= 1; --j) { //j表示关于重量的容量
			if (i==0 && j >= weight[i]) {
				ans[j] = value[i];
				continue;
			}//初始化设置
			if(j >= weight[i]) {
				ans[j] = max(ans[j],ans[j-weight[i]] + value[i]);
			} 
		}
	}
	cout << ans[m]<

//好玩!欢迎大家指出问题!一起讨论,一起学习!

你可能感兴趣的:(算法基础)