根据需要,用适当的语句填入下面算法的_______中(题目中的代码为PASCAL): 问题:设有n件物品,重量分别为w1,w2,w3,…,wn和一个能装载总重量为T的背包。能否从n件物品中选择若干件恰好使它们的重量之和等于T。若能,则背包问题有解,否则无解。解此问题的算法如下: FUNCTION kanp_stack(VAR stack,w:ARRAY[1..n] OF real; VAR top:integer; T:real):boolean; {w[1:n] 存放n件物品的重量,依次从中取出物品放入背包中,检查背包重量,若不超过T,则装入,否则弃之,取下一个物品试之。若有解则返回函数值true,否则返回false} BEGIN top:=0; i:=1; { i指示待选物品} WHILE (1)_______ AND(2)DO [IF (3) OR (4)______ AND (i<n) THEN [top := (5)_______ ;stack[top] :=i;{第i件物品装入背包} T:=T-w[i]]; IF T=0 THEN RETURN ((6)) {背包问题有解} ELSE [IF (i=n ) AND (top>0) THEN [i:=(7);{取出栈顶物品} top:= (8)_______ ;T:= (9)_______ ]; {恢复T值} i:=i+1 {准备挑选下一件物品} ]; ]; RETURN((10)_______) {背包无解} END;
时间: 2023-06-05 10:08:16 浏览: 179
1. (i<=n)
2. (top<=n)
3. T-w[i]>=0
4. (T-w[i]<0) and (top>0)
5. top:=top+1
6. true
7. stack[top]
8. top:=top-1
9. T:=T+w[stack[top+1]]
10. false
阅读全文