📄 knap.h
字号:
class Knap
{
friend float Knapsack(float *,float *,float ,int);
private:
float Bound(int i);
void Backtrack(int i);
float c;
int n;
float *w;
float *p;
float cw;
float cp;
float bestp;
};
float Knap::Bound(int i)
{
float cleft=c-cw;
float b=cp;
while(i<=n&&w[i]<=cleft)
{
cleft-=w[i];
b+=p[i];
i++;
}
if(i<=n)b+=p[i]/w[i]*cleft;
return (float)b;
}
void Knap::Backtrack(int i)
{
if(i>n)
{
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(i+1)>bestp)
Backtrack(i+1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -