948715321
948715321
关注数: 38
粉丝数: 7
发帖数: 77
关注贴吧数: 0
浪潮公司来我们学校招实训生时的笔试题目,打印出来与大家分享 RT!阅读以下说明和c语言,将应填入__(n)__处的字句写入答题纸对应处 说明:假设需要将N个任务分配给N个工人同时去完成,每个人都能承担这N个任务,但费用不同;下面的程序用回溯法计算总费用最小的一种工作分配方案,在该方案中,为每个人分配一个不同的任务。 程序中,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; /*设置的初始值,大于可能的费用*/ int task[N],temp[N],worker[N]; 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++) 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++) printf("task% is assigned to worker%d\n",i,temp[i]); } /*main*/
贴吧里有从事编程行业的人吗?能否简单说一下自己的工作 RT,RT! 小弟我即将毕业,希望有所参考,支持一下吧
菜鸟求助-运行时出现错误 这段代码一运行就出现错误,为什么没有调用create函数,求解,谢谢 #include<stdio.h> #include<malloc.h> struct student { int num; float score; struct student*next; }; struct student *create(int n) { struct student*head,*p,*q; int i; for(i=1;i<=n;i++) { p=(struct student*)malloc(sizeof(struct student)); p->next=NULL; printf("请输入第 %d个学生的学号和考试成绩:",i); scanf("%d%f",&p->num,&p->score); if(i==1) head=p; elseq->next=p; q=p; } return (head); } int main(void) { int n; struct student*head; printf("要输入的学生总数:"); scanf("%d\n",&n); head=create(n); }
1
下一页