阅读以下说明和C程序,将应填入(n)处的字句写在对应栏内。 【说明】 并行计算中需要将N个作业分配给N个处理器同时去完成,每个处理器都能承担这N个作业,但耗时不同。下面的程序用回溯法计算总耗时最小的一种作业分配方案,在该方案中为每个处理器分配1

admin2009-05-15  39

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

选项

答案(1)K= =N或K>=N

解析 当K等于N时,表示分配最后一个任务,其后便不再进入循环。
转载请注明原文地址:https://jikaoti.com/ti/KwW7FFFM
0

相关试题推荐
最新回复(0)