【计算机类职业资格】软件设计师-11及答案解析.doc
《【计算机类职业资格】软件设计师-11及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】软件设计师-11及答案解析.doc(24页珍藏版)》请在麦多课文档分享上搜索。
1、软件设计师-11 及答案解析(总分:100.00,做题时间:90 分钟)一、单项选择题(总题数:17,分数:35.00)1.以下关于渐近符号的表示中,不正确的是_。 A.n2=(n 2) B.n2=O(n2) C.n2=O(n) D.n3=O(n3)(分数:2.00)A.B.C.D.2.某算法的时间复杂度可用递归式 (分数:2.00)A.B.C.D.3.某算法的时间复杂度可用递归式 表示,若用 表示,则正确的是_。 A B(n 2 ) C(n) D (分数:2.00)A.B.C.D.4.对 n 个元素的有序表 A1n进行顺序查找,其成功查找的平均查找长度(即在查找表中找到指定关键码的元素时,所
2、进行比较的表中元素个数的期望值)为_。 A.n B.(n+1)/2 C.log2n D.n2(分数:2.00)A.B.C.D.5.对 n 个元素值分别为-1、0 或 1 的整型数组 A 进行升序排序的算法描述如下:统计 A 中-1、0 和 1 的个数,设分别为 n 1 、n 2 和 n 3 ,然后将 A 中的前 n 1 个元素赋值为-1,第 n 1 +1 到 n 1 +n 2 个元素赋值为 0,最后 n 3 个元素赋值为 1。该算法的时间复杂度和空间复杂度分别为_。 A.(n)和 (1) B.(n)和 (n) C.(n 2)和 (1) D.(n 2)和 (n)(分数:2.00)A.B.C.D.
3、6.对于关键字序列(26,25,72,38,8,18,59),采用散列函数 H(Key)=Key mod 13 构造散列表(哈希表)。若采用线性探测的开放定址法解决冲突(顺序地探查可用存储单元),则关键字 59 所在散列表中的地址为_。(分数:2.00)A.6B.7C.8D.97.用插入排序和归并排序算法对数组3,1,4,1,5,9,6,5进行从小到大的排序,则分别需要进行_次数组元素之间的比较。(分数:2.00)A.12,14B.10,14C.12,16D.10,168.某一维数组中依次存放了数据元素 15、23、38、47、55、62、88、95、102、123,采用折半(二分)法查找元素
4、 95 时,依次与_进行了比较。(分数:2.00)A.62、88、95B.62、95C.55、88、95D.55、959.递增序列 A(a 1 ,a 2 ,a n )和 B(b 1 ,b 2 ,b n )的元素互不相同,若需将它们合并为一个长度为 2n 的递增序列,则当最终的排列结果为_时,归并过程中元素的比较次数最多。(分数:2.00)A.a1,a2,an,b1,b2,bnB.b1,b2,bn,a1,a2,anC.a1,b1,a2,b2,ai,bi,an,bnD.a1,a2,ai/2,b1,b2,bi/2,ai/2+1,ai/2+2,an,bi/2+1,bn10.现要对 n 个实数(仅包含正
5、实数和负实数)组成的数组 A 进行重新排列,使得其中所有的负实数都位于正实数之前。求解该问题的算法的伪代码如下所示,则该算法的时间和空间复杂度分别为_。 i=0; j=n-1; while ij do while Ai0 do i=i+1; while Aj0 do j =j-1; if ij do 交换 Ai和 Aj;(分数:2.00)A.(n)和 (n)B.(1)和 (n)C.(n)和 (1)D.(1)和 (1)11.迪杰斯特拉(Diikstra)算法用于求解图上的单源点最短路径。该算法按路径长度递增次序产生最短路径,本质上说,该算法是一种基于_策略的算法。(分数:2.00)A.分治B.动
6、态规划C.贪心D.回溯12.在有 n 个无序无重复元素值的数组中查找第 i 小的数的算法描述如下:任意取一个元素 r,用划分操作确定其在数组中的位置,假设元素 r 为第 k 小的数。若 i 等于 k,则返回该元素值;若 i 小于 k,则在划分的前半部分递归进行划分操作找第 i 小的数;否则在划分的后半部分递归进行划分操作找第 k-i 小的数。该算法是一种基于_策略的算法。(分数:2.00)A.分治B.动态规划C.贪心D.回溯13.要在 88 的棋盘上摆放 8 个“皇后”,要求“皇后”之间不能发生冲突,即任何两个“皇后”不能在同一行、同一列和相同的对角线上,则一般采用_来实现。(分数:2.00)
7、A.分治法B.动态规划法C.贪心法D.回溯法14.分治算法设计技术_。(分数:2.00)A.一般由 3 个步骤组成:问题划分、递归求解、合并解B.一定用递归技术来实现C.将问题划分为 k 个规模相等的子问题D.划分代价很小而合并代价很大15.用动态规划策略求解矩阵连乘问题 M 1 *M 2 *M 3 *M 4 ,其中 M 1 (20*5)、M 2 (5*35)、M 3 (35*4)和 M 4 (4*25),则最优的计算次序为_。(分数:2.00)A.(M1*M2)*M3)*M4B.(M1*M2)*(M3*M4)C.(M1*(M2*M3)*M4D.M1*(M2*(M3*M4)16._不能保证求得
8、 0-1 背包问题的最优解。(分数:2.00)A.分支限界法B.贪心算法C.回溯法D.动态规划策略某货车运输公司有一个中央仓库和 n 个运输目的地,每天要从中央仓库将货物运输到所有运输目的地,到达每个运输目的地一次且仅一次,最后回到中央仓库。在两个地点 i 和 j 之间运输货物存在费用 C ij 。为求解旅行费用总和最小的运输路径,设计如下算法:首先选择离中央仓库最近的运输目的地 1,然后选择离运输目的地 1 最近的运输目的地 2每次在需访问的运输目的地中选择离当前运输目的地最近的运输目的地,最后回到中央仓库。该算法采用了_算法设计策略,其时间复杂度为_。(分数:3.00)A.分治B.动态规划
9、C.贪心D.回溯(2). A.(n 2) B.(n) C.(nlgn) D.(1)(分数:1.50)A.B.C.D.二、论述题(总题数:6,分数:65.00)阅读下列说明和 C 代码,回答下面问题。 说明 用两台处理机 A 和 B 处理 n 个作业。设 A 和 B 处理第 i 个作业的时间分别为 a i 和 b i 。由于各个作业的特点和机器性能的关系,对某些作业,在 A 上处理时间长,而对某些作业在 B 上处理时间长。一台处理机在某个时刻只能处理一个作业,而且作业处理是不可中断的,每个作业只能被处理一次。现要找出一个最优调度方案,使得 n 个作业被这两台处理机处理完毕的时间(所有作业被处理的
10、时间之和)最少。 算法步骤如下。 (1)确定候选解上界为最短的单台处理机处理所有作业的完成时间 m: (分数:15.00)(1).根据以上说明和 C 代码,填充 C 代码中的空白处。(分数:5.00)_(2).根据以上 C 代码,算法的时间复杂度为_(用 O 符号表示)。(分数:5.00)_(3).考虑 6 个作业的实例,各个作业在两台处理机上的处理时间如表所示。该实例的最优解为_,最优解的值(即最短处理时间)为_。最优解用(x 1 ,x 2 ,x 3 ,x 4 ,x 5 ,x 6 )表示,其中若第 i个作业在 A 上处理,则 x i =1,否则 x i =2。如(1,1,1,1,2,2)表示
11、作业 1、2、3 和 4 在 A 上处理,作业 5 和 6 在 B 上处理。 各个作业在两台处理机上的处理时间 作业 1 作业 2 作业 3 作业 4 作业 5 作业 6 处理机 A 2 5 7 10 5 2 处理机 B 3 8 4 11 3 4 (分数:5.00)_17.阅读下列说明和 C 代码,将应填入空白处的语句补充完整。 说明 设某一机器由 n 个部件组成,每一个部件都可以从 m 个不同的供应商处购得。供应商 j 供应的部件 i 具有重量 W ij 和价格 C ij 。设计一个算法,求解总价格不超过上限 cc 的最小重量的机器组成。 采用回溯法来求解该问题。 首先定义解空间。解空间由长
12、度为 n 的向量组成,其中每个分量取值来自集合1,2,m,将解空间用树形结构表示。 接着从根节点开始,以深度优先的方式搜索整个解空间。从根节点开始,根节点成为活节点,同时也成为当前的扩展节点。向纵深方向考虑第 1 个部件从第 1 个供应商处购买,得到一个新节点。判断当前的机器价格(C 11 )是否超过上限(cc),重量(W 11 )是否比当前已知的解(最小重量)大,若是,应回溯至最近的一个活节点;若否,则该新节点成为活节点,同时也成为当前的扩展节点,根节点不再是扩展节点。继续向纵深方向考虑第 2 个部件从第 1 个供应商处购买,得到一个新节点。同样判断当前的机器价格(C 11 +C 21 )是
13、否超过上限(cc),重量(W 11 +W 21 )是否比当前已知的解(最小重量)大。若是,应回溯至最近的一个活节点;若否,则该新节点成为活节点,同时也成为当前的扩展节点,原来的节点不再是扩展节点。以这种方式递归地在解空间中搜索,直到找到所要求的解或者解空间中已无活节点为止。 下面是该算法的 C 语言实现。 (1)变量说明 n:机器的部件数 m:供应商数 cc:价格上限 w:二维数组,wij表示第 j 个供应商供应的第 i 个部件的重量 c:二维数组,cij表示第 j 个供应商供应的第 i 个部件的价格 bestW:满足价格上限约束条件的最小机器重量 bestC:最小重量机器的价格 bestX:
14、最优解,一维数组,bestXi表示第 i 个部件来自哪个供应商 cw:搜索过程中机器的重量 cp:搜索过程中机器的价格 x:搜索过程中产生的解,xi表示第 i 个部件来自哪个供应商 i:当前考虑的部件,从 0 到 n-1 j:循环变量 (2)函数 backtrack int n=3; int m=3; int cc=4; int w33=1, 2, 3, 3, 2, 1, 2, 2, 2; int c33=1, 2, 3, 3, 2, 1, 2, 2, 2; int bestW=8; int bestC=0; int bestX3=0, 0, 0; int cw=0; int cp=0; in
15、t X3=0, 0, 0; int backtrack(int i) int j=0; int found=0; if(in-1) /*得到问题解*/ bestW=cw; bestC=cp; for(j=0; jn; j+) _; return 1; if(cp=cc) /*有解*/ found=1; for(j=0; _; j+) /*第 i 个部件从第 j 个供应商购买*/ _; cw=cw+wij; cp=cp+ciij; if(cp=cc /*回溯*/ cw=cw-wij; _; return found; (分数:5.00)_阅读下列说明和 C 代码,回答下面问题。 说明 某应用中需
16、要对 100000 个整数元素进行排序,每个元素的取值在 05 之间。排序算法的基本思想是:对每一个元素 x,确定小于等于 x 的元素个数(记为 m),将 x 放在输出元素序列的第 m 个位置。对于元素值重复的情况,依次放入第 m-1、m-2个位置。例如,如果元素值小于等于 4 的元素个数有 10 个,其中元素值等于 4 的元素个数有 3 个,则 4 应该在输出元素序列的第 10 个位置、第 9 个位置和第 8 个位置上。算法具体的步骤如下。 步骤 1:统计每个元素值的个数。 步骤 2:统计小于等于每个元素值的个数。 步骤 3:将输入元素序列中的每个元素放入有序的输出元素序列。 下面是该排序算
17、法的 C 语言实现。 (1)常量和变量说明 R:常量,定义元素取值范围中的取值个数,如上述应用中 R 值应取 6 i:循环变量 n:待排序元素个数 a:输入数组,长度为 n b:输出数组,长度为 n c:辅助数组,长度为 R,其中每个元素表示小于等于下标所对应的元素值的个数 (2)函数 sort void sort(intn, int a, intb) intcR, i; for (i=0; i_; i+) ci=0; for(i=0; in; i+) cai=_; for(i=1; iR; i+) ci=_; for(i=0; in; i+) bcai-1=_; cai=cai-1; (分数
18、:15.00)(1).根据说明和 C 代码,填充 C 代码中的空缺。(分数:5.00)_(2).根据 C 代码,函数的时间复杂度和空间复杂度分别为_和_(用字母 O 符号表示)。(分数:5.00)_(3).根据以上 C 代码,分析该排序算法是否稳定。若稳定,请简要说明(不超过 100 字);若不稳定,请修改其中代码使其稳定(给出要修改的行号和修改后的代码)。(分数:5.00)_阅读下列说明和 C 代码,回答下面问题。 说明 堆数据结构定义如下。 对于 n 个元素的关键字序列a 1 ,a 2 ,a n ,当且仅当满足下列关系时称其为堆。 在一个堆中,若堆顶元素为最大元素,则称为大顶堆;若堆顶元素
19、为最小元素,则称为小顶堆。堆常用完全二叉树表示,下图是一个大顶堆的例子。 (分数:15.00)(1).根据以上说明和 C 代码,填充 C 代码中的空白处。(分数:5.00)_(2).根据以上 C 代码,函数 heapMaximum,heapExtractMax 和 maxHeaplnsert 的时间复杂度的紧致上界分别为_、_和_(用 O 符号表示)。(分数:5.00)_(3).若将元素 10 插入到堆 A=(15,13,9,5,12,8,7,4,0,6,2,1)中,调用 maxHeaplnsert 函数进行操作,则新插入的元素在堆 A 中第_个位置(从 1 开始)。(分数:5.00)_阅读下
20、列说明,回答下面问题。 说明 现需在某城市中选择一个社区建一个大型超市,使该城市的其他社区到该超市的距离总和最小。用图模型表示该城市的地图,其中顶点表示社区,边表示社区间的路线,边上的权重表示该路线的长度。现设计一个算法来找到该大型超市的最佳位置:即在给定图中选择一个顶点,使该顶点到其他各项点的最短路径之和最小。算法首先需要求出每个顶点到其他任一顶点的最短路径,即需要计算任意两个顶点之间的最短路径;然后对每个顶点,计算其他各项点到该顶点的最短路径之和;最后,选择最短路径之和最小的顶点作为建大型超市的最佳位置。(分数:10.00)(1).本题采用 Floyd-Warshall 算法求解任意两个顶
21、点之间的最短路径。已知图 G 的顶点集合为V=1,2,n,W=W ij n*n 为权重矩阵。设 d (k) ij =从顶点 i 到顶点 j 的一条最短路径的权重。当k=0 时,不存在中间顶点,因此 d (0) ij =w ij ;当 k0 时,该最短路径上所有的中间顶点均属于集合1,2,k,若中间顶点包括顶点 k,则 d (k) ij =d (k-1) ik +d (k-1) kj ,若中间顶点不包括顶点则 d (k-1) ij =d (k-1) i ,于是得到如下递归式。 因为对于任意路径,所有的中间顶点都在集合1,2,n内,因此矩阵 D (n) =d (n) ij n*n 给出了任意两个顶
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 软件 设计师 11 答案 解析 DOC
