考试总分:7分
考试类型:模拟试题
作答时间:60分钟
已答人数:967
试卷答案:有
试卷介绍: 2007年下半年 软件设计师 下午试卷
A(1)~(4)处联系的类型。联系类型分为一对一、一对多和多对多三种,分别使用1:1,1:n或1:*,m:n或*:*表示。【问题2】(4分)补充图2-1中的联系并指明其联系类型。联系名可为:联系1,联系2,…。【问题3】(4分)根据图2-1和说明,将逻辑结构设计阶段生成的关系模式中的空(5)~(8)补充完整。【问题4】(3分)根据问题描述,写出客户、委托书和派工单这三个关系的主键。[15分]
A(1)每个作业jobi(1≤i≤n)的编号为i,jobi有一个收益值p[i]和最后期限值d[i];
B(2)机器在一个时刻只能处理一个作业,而且每个作业需要一个单位时间进行处理,一旦作业开始就不可中断,每个作业的最后期限值为单位时间的正整数倍;
C(3)job1~jobn的收益值呈非递增顺序排列,即p[1]≥p[2]≥…≥p[n];
D(4)如果作业jobi在其期限之内完成,则获得收益p[i];如果在其期限之后完成,则没有收益。为获得较高的收益,采用贪心策略求解在期限之内完成的作业序列。图4-1是基于贪心策略求解该问题的流程图。(1)整型数组J[]有n个存储单元,变量k表示在期限之内完成的作业数,J[1..k]存储所有能够在期限内完成的作业编号,数组J[1..k]里的作业按其最后期限非递减排序,即d[J[1]]≤…≤d[J[k]]。(2)为了方便于在数组J中加入作业,增加一个虚拟作业job0,并令d[0]=0,J[0]=0。(3)算法大致思想:先将作业job1的编号1放入J[1],然后,依次对每个作业jobi(2≤i≤n)进行判定,看其能否插入到数组J中,若能,则将其编号插入到数组J的适当位置,并保证J中作业按其最后期限非递减排列,否则不插入。jobi能插入数组J的充要条件是:jobi和数组J中已有作业均能在其期限之内完成。(4)流程图中的主要变量说明如下:i:循环控制变量,表示作业的编号;k:表示在期限内完成的作业数;r:若jobi能插入数组J,则其在数组J中的位置为r+1;q:循环控制变量,用于移动数组J中的元素。图4-1贪心策略流程图【问题1】(9分)请填充图4-1中的空缺(1)、(2)和(3)处。【问题2】(4分)假设有6个作业job1,job2,…,job6;完成作业的收益数组p=(p[1],p[2],p[3],p[4],p[5],p[6])=(90,80,50,30,20,10);每个作业的处理期限数组d=(d[1],d[2],d[3],d[4],d[5],d[6])=(1,2,1,3,4,3)。请应用试题中描述的贪心策略算法,给出在期限之内处理的作业编号序列(4)(按作业处理的顺序给出),得到的总收益为
E(5)。【问题3】(2分)对于本题的作业处理问题,用图4-1的贪心算法策略,能否求得最高收益?
F(6)。用贪心算法求解任意给定问题时,是否一定能得到最优解?
G(7)。[15分]