●一般来说,递归算法的执行过程可先后分成两个阶段,它们是(38)和(39)。
(38)A.枚举
B.试探
C.递推
D.分析
(39)A.返回
B.合成
C.回溯
D.回归
答案:(38)C(39)D
解析:递归算法的执行过程可分递推和回归两个阶段。在递推阶段,把较复杂的问题(规模为n)的求解推到比原问题简单一些的问题(规模小于n)的求解。回归阶段,当获得最简单情况的解后,逐级返回。依次得到稍复杂问题的解。
●当求解一个问题既可以用递归算法,也可以用递推算法时,我们优先考虑(40)算法,因为(41)。
(40)A.递归
B.递推
C.先递归后递推
D.先递推后递归
(41)A.递归的效率比递推高
B.递归易于问题求解
C.递推的效率比递归高
D.递推宜于问题分解
答案:(40)B(41)A
解析:递归算法不断进行函数调用和返回,需要使用堆栈保存返回地址,回归时需要弹栈回到调用函数中。所以耗费资源(时间,空间)较多,在递推、递归都可以使用的时候,使用递推可以获得更高的效率。
●数据结构中的贪心算法的特点是(42)。
(42)A.求取全部可行解
B.只求最优
C.不求最优,只求满意
D.求取全部最优解
答案:(42)C
解析:贪心算法是一种不追求最优解。只希望得到当前满意解的方法。
●二一十进制编码是一种使用4位二进制数表示一位十进制数的方法,在用二进制加法器求和需要特殊处理,当和的本位十进制数二一十进制编码小于等于1001且向高位无进位时(43);当和小于等于1001且向高位有进位时,(44);当和大于1001时,(45)。
(43)~(45)A.不需修正
B.加6修正
C.减6修正
D.无法判别
答案:(43)A(44)B(45)B
解析:二一十进制编码采用0001表示十进制1,0010表示十进制2,依次类推,1001表示十进制9。十进制运算时,当相加两数之和小于等于9(1001)时,可以直接相加,不需要修正;当大于9时便产生进位,直接相加得到时无效的编码,这时需对和数进行加6修正。因为4位二进制数能表示16个码元,而十进制数只有0到9十个码元。修正时加6,恰好能得到正确的十进制码元。例如1+9=10,正确码元为0000。二进制0001和1001直接相加得到1010。加上6即O110后。得到0000。
●“进位”位移入被操作数的最高位,其余所有位接收其相邻高位值,最低位舍去的操作是(46)指令。被操作数的最高位保持不变,其余所有位接收其相邻高位值,最低位移到“进位”位中的操作是(47)指令。在程序执行过程中改变按程序计数器顺序读出指令的指令属于(48)。实际地址是程序计数器的内容加上指令中形式地址值的寻址方式是(49)。特权指令在多用户、多任务的计算机系统中必不可少,它主要用于(50)。
(46)、(47)A.逻辑右移
B.算术右移
C.乘2运算
D.除2运算
(48)A.传送指令
B.转移指令
C.输入输出指令
D.特权指令
(49)A.相对寻址
B.直接寻址
C.基址寻址
D.变址寻址
(50)A.系统硬件自检和配置
B.检查用户的权限
C.用户写汇编程序时调用
D.系统资源的分配和管理
答案:(46)A(47)D(48)B(49)A(50)D
解析:逻辑右移指所有位右移,最低位舍去。若最高位不变,则为算术运算,具体操作视相应情况而定。转移指令改变程序计数器中顺序读出指令的地址值。使程序发生跳转。相对寻址地址值是当前程序计数器的值与指令中偏移量的和。特权指令用于对系统资源的管理和分配。
●算法中的每一条指令必须有确切的含义,并且在任何条件下,算法只有唯一的一条执行路径,这句话说明算法具有(51)特性。
(51)A.正确性
B.确定性
C.可行性
D.健壮性
答案:(51)B
解析:算法具有有穷性、确定性、可行性、输入、输出五个特点。其中算法中的每一条指令必须有确切的含义,并且在任何条件下。算法只有唯一的一条执行路径说明的是算法的确定性。
●排序算法中的快速排序算法采用的思路是(52)。
(52)A.回溯法
B.分治法
C.动态规划
D.分支定界法
答案:(52)B
解析:快速排序的基本思想是:按照某个基准元素,通过一轮排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比基准元素小:另外一部分的所有数据都比基准元素大,然后再按此方法对这两部分数据分别进行快速排序。整个排序过程可以递归进行,以此达到整个数据变成有序序列。
●哈夫曼(Huffman)编码是一种常用的压缩编码方法,它可以用来构造具有(53)的二叉树,这是一种采用了(54)策略的算法。
(53)A.后缀码
B.最优后缀码
C.前缀码
D.最优前缀码
(54)A.贪心
B.回溯
C.递推
D.分治
答案:(53)D(54)A
解析:哈夫曼(Huffman)编码是一种常用的压缩编码方法,是Huffman于1952年为压缩文本文件建立的。它的基本原理是频繁使用的数据用较短的代码表示,较少使用的数据用较长的代码代替,每个数据的编码各不相同。这些代码都是二进制码,且编码的长度是可变的。编码必须保证不能出现一个码字和另一个的前几位相同的情况。Huffman编码算法具体实现是:首先统计出每个符号出现的频率,然后把上述频率按从小到大的顺序排列。每一次选出最小的两个值,作为二叉树的两个叶子节点,将和作为它们的根节点,这两个叶子节点不再参与比较,新的根节点参与比较。重复上一步,直到最后得到和为1的根节点。将形成的二叉树的左节点标0,右节点标1。把从最上面的根节点到最下面的叶子节点途中遇到的0,1序列串起来,就得到了各个符号的编码。