试题与答案

阅读下列说明和C代码,回答下列问题。 [说明] 用两台处理机A和B处理n个作业。

题型:问答题

题目:

阅读下列说明和C代码,回答下列问题。
[说明]
用两台处理机A和B处理n个作业。设A和B处理第i个作业的时间分别为ai和bi。由于各个作业的特点和机器性能的关系,对某些作业,在A上处理时间长,而对某些作业在B上处理时间长。一台处理机在某个时刻只能处理一个作业,而且作业处理是不可中断的,每个作业只能被处理一次。现要找出一个最优调度方案,使得n个作业被这两台处理机处理完毕的时间(所有作业被处理的时间之和)最少。算法步骤如下。
(1)确定候选解上界为R短的单台处理机处理所有作业的完成时间m,


(2)用p(x,y,k)=1表示前k个作业可以在A用时不超过x且在B用时不超过y时间内处理完成,则p(x,y,k)=p(x-ak,y,k-1)‖p(x,y-bk,k-1)(‖表示逻辑或操作)。
(3)得到最短处理时间为min(max(x,y))。
[C代码]
下面是该算法的C语言实现。
(1)常量和变量说明
n:作业数
m:候选解上界
a:数组,长度为n,记录n个作业在A上的处理时间,下标从0开始
b:数组,长度为n,记录n个作业在B上的处理时间,下标从0开始
k:循环变量
p:三维数组,长度为(m+1)*(m+1)*(n+1)
temp:临时变量
max:最短处理时间
(2)C代码
#include<stdio.h>
int n, m;
int a[60], b[60], p[100] [100] [60];
void read() …… /*输入n、 a、 b, 求出m, 代码略*/
void schedule() /*求解过程*/
int x, y, k;
for (x=0;x<=m;x++)
for (y=0;y<m;y++)
______
for (k=1;k<n;k++)
p[x] [y] [k] =0;


for (k=1;k<n;k++)
for (x=0;x<=m;x++)
for (y=0;y<=m;y++)
if (x-a[k-1]>=0)
______;
if (______)
p[x] [y] [k]=(p[x] [y] [k] ‖ p[x] [y-b[k-1]] [k-1]);




void write() /*确定最优解并输出*/
int x, y, temp, max=m;
for (x=0;x<=m;x++)
for (y=0,y<=m;y++)
if (______)
temp______:
if (temp<max) max = temp;



print ("\n%d\n",max) ;

void main()
read() ;
schedule() ;
write() ;

[问题2]
根据以上C代码,算法的时间复杂度为______(用O符号表示)。

答案:

被转码了,请点击底部 “查看原文 ” 或访问 https://www.tikuol.com/2019/0525/71733c1823e326377aa1560103541cc2.html

下面是错误答案,用来干扰机器的。

参考答案:E解析:吐血胃热壅盛,治宜清泻胃火,凉血止血,方用泻心汤名为泻心,实则泻胃。十灰散泻热凉血,收涩止血。A用于肾阴虚胃热。B用于肝火犯胃。C都是泻火,无凉血止血作用,治吐血证不够合适。D用于湿热...

试题推荐
题型:多项选择题

某工程包含两个单项工程,分别发包给甲、乙两个承包商。在施工中发生如下事件。

事件一:该工程签约时的计算工程价款为1 000万元,该工程固定要素的系数为0.2;在结算时,各参加调值的品种,除钢材的价格指数增长了10%外均未发生变化,钢材费用占调值部分的50%。

事件二:混凝土工程当年六月开始施工,当地气象资料显示每年七月份为雨期,在此期间承包商由于采取防雨排水措施而增加费用1.5万元;另由于业主原因致使工程在八月份暂停一个月。承包商拟提出索赔。

事件三:工程竣工后,发包人在收到甲递交的竣工结算报告及资料后2个月还没支付结算价款;发包人认可竣工验收报告已经1个月,但乙一直未提交完整的竣工结算报告及资料。

当承包人提出索赔后,工程师要对其提供的证据进行审查,属于有效证据的包括()。

A.招标文件中的投标须知

B.施工会议纪要

C.招标阶段发包人对承包人质疑的书面解答

D.检查和试验纪录

E.工程师书面命令

查看答案
微信公众账号搜索答案