[试题]

阅读以下说明和C程序,将应填入(n)处的字句写在答题纸的对应栏内。

(说明)

假设需要将N个任务分配给N个工人同时去完成,每个人都能承担这N个任务,

但费用不同。下面的程序用回溯法计算总费用最小的一种工作分配方案,在该方案中,为每个人分配1个不同的任务。

程序中,N个任务从0开始依次编号,N个工人也从0开始依次编号,主要的变量说明如下:

c[i][j]:将任务i分配给工人j的费用;

task[i]:值为0表示任务i未分配,值为j表示任务i分配给工人j;

worker[k]:值为0表示工人k未分配任务,值为1表示工人k已分配任务;

mincost:最小总费用。

(C程序)

#include<stdio.h>

#define N 8 /*N表示任务数和工人数*/

int c[N][N];

unsigned int mincost=65535; /*设置min的初始值,大于可能的总费用*/

int task[N],temp[N],workerIN];

void Plan(int k,unsigned Int cost)

{ int i;

if ((1)&&cost<mincost){

mincost=cost;

for (i=0;i<N;i++) temp[i]:task[i];

}

else{

for(i=0;i<N;i++) /*分配任务k*/

if (worker[i]=0&&(2)){

worker[i]=1; task[k]=(3);

Plan((4),cost+c[k][i]);(5); task[k]=0;

}/*if*/

}

}/*Plan*/

void main()

{int i,j;

for (i=0;i<N;i++) { /*设置每个任务由不同工人承担时的费用及全局数组的初值*/

worker[i]=0;task[i]=0; temp[i]=0;

for(j=0;j<N;j++)

scanf ("%d",&c[i][j]);

}

Plan (0,0); /*从任务0开始分配*/

printf("/n最小费用=%d/n",mincost);

for(i二0;i<N;i++)

pnntf("Task%d iB assigned toWorker%d/n",i,temp[i]);

}/*main*/

参考答案与解析:

相关试题

阅读以下说明和C£«£«代码,将应填入(n)处的字句写在答题纸的对应栏内。说明

[试题]阅读以下说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。说明通常情况下,用户可以对应用系统进行配置,并将配置信息保存在配置文件中。应用系统在启动时首先将配置文件加载到内存中,这些内存配置信息应该有且仅有一份。下面的代码应用了单身模式(Singleton)以保证Configure类只能有一个实例。这样, Configure类的使用者无法定义该类的多个实例,否则会产生编译错误。C.++代码#include<iostream.h>class Configure{(1):C.onfigure

  • 查看答案
  • 阅读下列C程序和程序说明,将应填入(n)处的字句写在答题纸的对应栏内。(说明)用

    [试题]阅读下列C程序和程序说明,将应填入(n)处的字句写在答题纸的对应栏内。(说明)用克鲁斯卡尔算法求解给定图的最小生成树。include <stdio. h>include <stdlib. h>define MAXN 30typedef struct{ int v1,v2; /*一条边依附的两个顶点*/int weight; /*边上的权值*/}EDGE;typedef struct{ int Vnum; /*图中的顶点数目*/E.DGE e[MAXN*(MAXN-1)/2]; /*图中的边*/}G

  • 查看答案
  • 阅读以下说明和C£«£«程序代码,将应填入(n)处的字句写在答题纸的对应栏内。(

    [试题]阅读以下说明和C++程序代码,将应填入(n)处的字句写在答题纸的对应栏内。(说明)在下面的C++代码中,类SalesTicket能够完成打印票据正文的功能,类HeadDec- orator与FootDecorator分别能够完成打印票据的台头和脚注的功能。已知该程序运行后的输出结果如下所示,请填补该程序代码中的空缺。这是票据的台头!这是票据正文!这是票据的脚注!---------------这是票据的台头!这是票据的脚注!(C++程序代码)#includeusing namespace std;c

  • 查看答案
  • 阅读以下说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。[说明]

    [主观题]阅读以下说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。[说明]求树的宽度,所谓宽度是指在二叉树的各层上,具有结点数最多的那一层的结点总数。本算法是按层次遍历二叉树,采用一个队列q,让根结点入队列,若有左右子树,则左右子树根结点入队列,如此反复,直到队列为空。[函数]int Width ( BinTree *T{int front=-1, rear=-1; /*队列初始化*/int flag=0, count=0, p; /*p用于指向树中层的最右边的结点, flag 记录层中结点

  • 查看答案
  • 阅读以下说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。(说明) 某单

    [试题]阅读以下说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。(说明)某单位准备进行一次选举,对指定的n名(n<80)候选人进行投票。为了简化选举工作,事先印制了写有这n名候选人姓名的选票,投票者只需将选中者名下的圆圈涂黑即可。规定每张选票上被涂黑的圆圈数不得超过3个,也不得少于1个,否则视为无效选票。投票结束后,所有选票经计算机扫描处理,形成了描述选票状态的文本文件。例如,n=8时所形成的文件如下:01011000100101001001100011111111000000000011100

  • 查看答案
  • 试题二 阅读以下说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 (

    [试题]试题二阅读以下说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。(说明)函数MultibaseOutput(long n,int B)的功能是:将一个无符号十进制整数n转换成B(2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把B进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C代码中的符号常量及栈的类型定义如下:#define MAXSIZE 32typedef struct{int *elem;/*栈的存储区*/int max; /*栈的容量

  • 查看答案
  • 试题四 阅读以下说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 (

    [试题]试题四阅读以下说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。(说明)将一正整数序列{K1,K2,…,K9}重新排列成一个新的序列,新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面),最后调用writeDat()函数的新序列输出到文件out.dat中。在程序中已给出了10个序列,每个序列有9个正整数,并存入数组a[10][9]中,分别求出这10个新序列。例:序列 {6,8,9,1,2,5,4,7,3}经重排后成为{3,4,5,2,1,6,8,9,7}(函数)

  • 查看答案
  • 试题四 阅读以下说明和C代码,将应填入 (n) 处的字句写在答题纸的对应栏内。

    [试题]试题四阅读以下说明和C代码,将应填入 (n) 处的字句写在答题纸的对应栏内。[说明]函数MultibaseOutput(long n, int B)的功能是:将一个无符号十进制整数n转换成B(2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把B进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C代码中的符号常量及栈的类型定义如下:#define MAXSIZE 32typedef struct {int *elem; /* 栈的存储区 */int max;

  • 查看答案
  • 试题四 阅读以下说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 (

    [试题]试题四阅读以下说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。(说明)该程序的功能是从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中,最后把结果xx输出到文件OUT6.DAT中。例如:原文:You He MeI am a student.结果:Me He Youstudent a am I原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号

  • 查看答案
  • 试题四 阅读以下说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 (

    [试题]试题四阅读以下说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。(说明)从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中;请编写程序,其功能是:以行为单位把字符串中所有小写字母o左边的字符串内容移到该串的右边存放,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放。最后把已处理的字符串仍按行重新存入字符串数组XX中,最后调用函数WRITEDAT(),把结果XX输出到文件OUT5.DAT中。例如:原文:You can create an index on any fi

  • 查看答案