- 20
- 0
- 约2.49千字
- 约 4页
- 2018-01-10 发布于河南
- 举报
回溯算法解决背包问题_源代码
templateclass Typew, class Typep
class Knap//建立类knap
{
friend Typew Knapsack(Typew* ,Typew*,Typew,int );//友元函数的声明
private://私有成员声明
Typew Bound(int i);
void Backtrack(int i);
Typew c;//背包容量
int n; //物品数
Typew *w;//物品重量数组
Typew *p;//物品价值数组
Typew cw;//当前重量
Typew cp;//当前价值
Typew bestp;//当前最优值
};
第二段
templateclass Typew, class Typep
void KnapTypew, Typep::Backtrack(int i)//友元函数的定义
{
if(in){//到达叶结点
bestp=cp;
return;}
if(cw+w[i]=c) //搜索左子树
{
cw+=w[i];
cp+=p[i];
Backtrack(i+1);
cw-=w[i];
cp-=p[i];
}
if(Bound
原创力文档

文档评论(0)