利用回溯法设计具有数据输入、处理和输出功能的0-1背包问题求解算法,实现算法的编译和运行,记录实验过程并整理实验结果;编写算法实现对0-1背包问题求解,基于回溯法的效率评估。
算法描述:
伪代码:
/*
*回溯函数 参数t表示当前处在第几层做抉择,t=1时表示当前在决定是否将第一个物品放入背包
*/
procedure Backtrack(t:integer)
begin
//叶子节点,输出结果
if t > n then
begin
//如果找到了一个更优的解
if All_Value > BestValue then
begin
//保存更优的值和解
BestValue =: All_Value;
for i:integer <- 1 to n do ++i
BestX[i] =: x[i];
end;
end;
else
begin
//遍历当前节点的子节点:0 不放入背包,1放入背包
for i:integer <- 0 to 1 do ++i)
begin
x[t] =: i;
if i == 0 then //不放入背包
begin
Backtrack(t + 1);

1808

被折叠的 条评论
为什么被折叠?



