软件设计师1990年下午试题5(流程图解析)

阅读下列说明和流程图。回答问题 1 和 2,把解答填入答卷的对应栏内。 

     有一个集合,集合中有 n 个元素,每个集合元素都是正整数,它们存放在一维数组A中,每个数组元素存放一个集合元素。对给定的整数 total(假定集合中每个元素的值均小于 total),流程图求出所有满足下列条件的子集:子集中各元素之和等于 total。 

本题在使用试探法找出全部解答的过程中,依次选取当前的候选元素,尝试组成一个小于 total 的部分和,如果合适,则选取下一元素试探;若不合适,则回溯取另一个候选元素尝试,题中利用 s 栈存放候单元素的下标,用它实现回溯。如果候选元素加上部分和等于 total ,则表示找到一个解答,然后通过回溯,再试探寻找其它的解答。
[问题1]

问流程图中的 ④ 应与 A~D 中的那一点相连,并填充图中的①~③,使之成为完整的流程图。
[问题2]

设 total=10,n=6,数组 A 中各元素的值为(8,4,1,2,5,3)。 

若图中的(1)框改为 sp:0,则执行该流程图后输出什么结果。 

[流程图] 

 

 

 

答案:

[问题1]

① i→s[sp] ② T+A[s[sp]]→T ③ s[sp]+1 ④ D
[问题2]

J=1时输出的解为:82

4123

415

253

J=2时输出的解为:4123

415

253

J=3时输出的解为:253

J=4时输出的解为:253

J=5,6时无解

原文地址:https://www.cnblogs.com/djcsch2001/p/2096462.html