Preparing NOJ
试设计一个用优先队列式分支限界法搜索子集空间树的函数。该函数的参数包括结点可行性判定函数和上界函数等必要的函数,并将此函数用于解0-1背包问题。0-1 背包问题描述如下:给定n种物品和一背包。物品i的重量是w i ,其价值为v i ,背包的容量为C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?在选择
装入背包的物品时,对每种物品i 只有2 种选择,即装入背包或不装入背包。不能将物品i装入背包多次,也不能只装入部分的物品i。
问题的形式化描述是,给定C>0,w i >0, v i >0,1≤i≤n,要求找出n 元0-1 向量(x 1 , x 2,…, xn ), xi∈{0,1},1≤i≤n
第1 行有2 个正整数n 和C,分别表示有n种物品,
背包的容量为C。接下来的2 行中,每行有n 个数,分别表示各物品的价值和重量。
程序运行结束时,将最佳装包方案,及其最大价值输出。第
1 行是最大价值,第2 行是最佳装包方案。
5 10
6 3 5 4 6
2 2 6 5 4
15
1 1 0 0 1
本题由旧版NOJ导入,来源: