工作分配问题

来源:互联网 发布:js获取标签的id 编辑:程序博客网 时间:2024/05/21 10:33

 设有n件工作分配给n个人。将工作i分配给第j个人所需要的费用为cij。试设计一个算法,为每个人分配1件不同的工作,并使总费用达到最小。


样例输入:

  3

  10 2 3

  2 3 4

  3 4 5

样例输出:

  9


排列树求解:

#include<stdio.h>#define n 3int value[n][n]={10,2,3,2,3,4,3,4,5};int a[n]={0,1,2};  //代表人 int minvalue=999999;int tempvalue;void traceback(int t){int i,temp;if(t==n){tempvalue=0;for(i=0;i<n;i++){tempvalue+=value[a[i]][i];   //第a[i]个人做第i个工作 }if(tempvalue<minvalue){minvalue=tempvalue;}return;}for(i=t;i<n;i++){temp=a[i];a[i]=a[t];a[t]=temp;traceback(t+1);temp=a[i];a[i]=a[t];a[t]=temp;}}int main() {traceback(0);printf("%d\n",minvalue);return 0;}