问题 问答题


阅读以下说明和C程序,将应填入(n)处的字句写在对应栏内。
【说明】
并行计算中需要将N个作业分配给N个处理器同时去完成,每个处理器都能承担这N个作业,但耗时不同。下面的程序用回溯法计算总耗时最小的一种作业分配方案,在该方案中为每个处理器分配1个不同的作业。
程序中,N个作业从0开始依次编号,N个处理器也从0开始依次编号,主要的变量说明如下:
c[i][j]:将作业i分配给处理器j的耗时;
job[i]:值为0表示作业i未分配,值为j表示作业i分配给处理器j;
processor[k]:值为0表示处理器k未分配作业,值为1表示处理器k已分配作业;
mincost:最小总耗时。
【C程序】
#include<stdio.h>
#define N 8/*N表示作业数和处理器数*/
int c[N][N];
unsigned int mincost=65535/*设置min的初始值,大于可能的总耗时*/
int job[N],temp[N],processor[N];
void Assign(int k,unsigned int cost)
{
int i;
if (1) && cost<mincost){
mincost = cost
for(i=0;i<N;i++)temp[i]=job[i];
}
else {
for(i=0;i<N;i++)/*分配作业k*/
if (2) && cost+c[k][i]<mincost){
processor[i]=1;job[k]= (3)
Assign (4) ,cost+c[k][i]);
(5) ;job[k]=0;
}/ * if * /
}
}/ *Assign * /
void main()
{
int i,j;
for(i=0;i<N;i++){/*设置每个作业由不同处理器承担时耗时及全局数组的初值*/
processor[i]=0;job[i]=0;temp[i]=0;
for(j=0;j<N;j++)
scanf("%d",&c[i][j]);
}
Assign(0,0);/*从作业0开始分配*/
printf("\n最小耗时=%d\n",mincost);
for(i=0;i<N;i++)
printf("Job%d is assigned to Processor%d\n",i,temp[i]);
}/*main*/

答案

参考答案:

解析:processor[i]=0 将分配处理器i的作业撤销,以便考察其他方案。

选择题
填空题

现有以下6个变化:

①在点燃的条件下,氢气在氧气中燃烧;

②给水通直流电;

③锌加入稀硫酸溶液中;

④氢氧化钠溶液跟稀盐酸混合;

⑤冷却硝酸钾热饱和溶液析出硝酸钾晶体;

⑥日本福岛第一核电站发生核反应,铀235裂变产生碘131。

请回答下列问题:

(1)探究化学变化的规律始终是化学科学的核心任务。上述变化中,属于化学变化的是(填变化的代号,下同)_______,属于物理变化的是_________。

(2)化学变化也叫化学反应,在上述化学反应中,属于分解反应的有_______,属于复分解反应的有________。将化学反应分为分解反应、化合反应、复分解反应和置换反应四种基本反应类型的依据是______________________。

(3)我们知道,能直接构成物质的微粒有分子、原子、离子。物质之所以发生化学反应,从微观的角度看,是因为反应物的微粒之间在一定条件下发生有效的相互作用,使微粒的结构发生改变,或微粒重新排列组合,宏观上表现为生成了新的物质。在反应①中,发生有效的相互作用的微粒是(写出微粒的符号)____________。反应③的化学方程式为______________________,发生有效的相互作用而促使反应发生的微粒是(写出微粒的符号)_________,微粒的转化过程是_______________。在反应④中,发生有效的相互作用而促使反应发生的微粒是(写出微粒的符号)____________。③和⑥两个变化的实质是否相同?_______。为什么?__________________。

(4)根据化学反应是放出热量还是吸收热量,将化学反应分为放热反应和吸热反应。在上述化学变化中,属于吸热反应的有_______________。