templateclass T
class Knapsack
{
public
Knapsack(int mSize,T cap,T wei,T prof)
T BKnapsack(int x);
……
protected
void BKnapsack(int k, T cp,T cw,T &fp,intx,int y);
T Bound(int k,T cp, T cw);
T m,w,p; 要求p[i]w[i]≥p[i+1]w[i+1]
int n;
};
templateclass T
T KnapsackT Bound(int k,T cp, T cw)
{ cp是当前收益,cw是当前背包重量,k是当前待考察的物品编号
T b=cp,c=cw;
for (int i=k+1;in; i++) {
c+=w[i];
if (cm) b+=p[i];
else return (b+(1- (c-m)w[i])p[i]);
}
return b;
}
templateclass T
void KnapsackTBKnapsack(int k, T cp,T cw,T &fp,int x,int y)
cp是当前收益,cw是当前背包重量,k是当前待考察的物品编号,要求p[i]w[i]≥p[i+1]w[i+1]
fp是当前最大收益
{ 考察左孩子结点
int j; T bp;
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余1页未读,立即下载