阅读下列说明和图,回答问题1至问题3,将解答填入对应栏内。 【说明】 某机器上需要处理n个作业.job1,job2,…,jobn,其中: (1)每个作jobi(1≤i≤n)的编号为i,jobi有一个收益值p[i]和最后期限值d[i]小

admin2008-11-02  28

问题 阅读下列说明和图,回答问题1至问题3,将解答填入对应栏内。
【说明】
   某机器上需要处理n个作业.job1,job2,…,jobn,其中:
   (1)每个作jobi(1≤i≤n)的编号为i,jobi有一个收益值p和最后期限值d
   (2)机器在一个时刻只能处理一个作业,而且每个作业需要一个单位时间进行处理,一旦作业开始就不可中断,每个作业的最后期限值为单位时间的正整数倍;
   (3)job1~jobn的收益值呈非递增顺序排列,即p[1)≥P[2]≥…[n):
   (4)如果作业jobi在其期限之内完成,则获得收益9;如果在其期限之后完成,则没有收益。
   为获得较高的收益,采用贪心策略求解在期限之内完成的作业序列。图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,则其在数组了中的位置为r+1:
   q:循环控制变量,用于移动数组J中的元素。

选项

答案(1)i<=n (2)d[J[r]]>d[i] (3)J[r+1]=i,或J[q+1]=i

解析
转载请注明原文地址:https://kaotiyun.com/show/25DZ777K
0

最新回复(0)