1992年高级程序员下午试题2(数字排列)

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

[说明]

流程图用来按递增顺序产生由数字1,2,3组成的非空序列。规定其产生的每个序列均不存在两个相同的相邻子序列。例如,该流程图产生的前五个序列为: 

1 2 

l 2 1 

1 2 l 3 

l 2 1 3 l 

序列 1211,1212 等均因含有两个相同的相邻子序列,故未被流程图产生。 

产生一个序列的方法是,在前一个合理的序列尾部之后添加数字 1,构成一个新序列,然后进行合理性检验。当新的序列不合理时,若新序列尾部为 1,则改为 2;若为 2,则改为 3,然后继续进行检验以寻求下一个合理的序列。当尾部已为 3 时,则删去该数字后,继续进行上述的更改和检验。

本流程图寻找长度小于等于N( 4≤N≤60 )的合理序列。二维数组 A 的每一行用于存放找到的一个序列,其中数组元素 A[I,61] 存放第 I 个序列的长度。

[问题1] 

填充流程图中的 ①~⑤,使之成为完整的流程图。 

 

[问题2] 

现对流程图中虚线所围的部分给出了下·图所示的简化形式,试填充其中的 ③~⑧,使之成为正确的简化。

 

答案:

[问题1]

① A(3,61)→J ② I+1→I ③ A(I,J-T-S+1):A(I,J-S+1) ④ A(I,J)+1→A(I,J) ⑤ J→A(I,61)
[问题2]

⑥ A(I,J-T-S+1):A(I,J-S+1)  ⑦ S:T  ⑧ S+1→S

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