17085 工作分配问题(必做)
时间限制:20000MS 内存限制:65535K
提交次数:0 通过次数:0
题型: 编程题 语言: C++;C;VC;JAVA
Description
有n件工作分配给n个人,将工作i分配给第j个人需要支付劳务费用Cij。请为每人分配一个工作,并使得总劳务费用达到最小。
输入格式
第一行一个正整数n(1<=n<=11),表示n个工作数,接下来n行,每行代表第i个工作支付给n个不同的人的劳务费用。
输出格式
两行。 第一行为最小的总劳务费用。 第二行有n个数,表示工作分配方案。 如下面sample用例的测试数据: 第二行是2 1 3,表示第1个工作分配给第2个人,第2个工作分配给第1个人,第3个工作分配给第3个人。 2+2+5=9 当同时有多种分配方案都能使得总劳务费用相同且都最小,小编号工作优先分配给小编号的人,仅输出这一种方案即可。
输入样例
3 10 2 3 2 3 4 3 4 5
输出样例
9 2 1 3
#include <iostream>
#include <stdio.h>
using namespace std;
int n;
int cost=0; //当前费用
int resC=100000; //最小费用
int c[100][100]; //费用表
int m[100]={0}; // 分配表
int res[100]; //最终分配表
void dfs(int deep){
if(deep>n-1){
//cout <<cost;
if(cost<resC) {
//小编号工作优先分配给小编号的人 注意边界
resC = cost;
for(int i=0;i<n;i++) // 跟新最小分配
res[i]=m[i];
}
}else{
for(int i=0;i<n;i++){
if(m[i]==0){
cost+=c[i][deep];
//每行代表第i个工作支付给n个不同的人的劳务费用!!!!!!
m[i] = deep+1; // 记录分配的任务编号
if(cost<resC) //剪枝
dfs(deep+1);
cost-=c[i][deep];
m[i] = 0;
}
}
}
}
int main()
{
freopen("in.txt","r",stdin);
cin >>n;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
cin >> c[i][j];
dfs(0);
cout << resC << endl;
//2 1 3,表示第1个工作分配给第2个人,第2个工作分配给第1个人,第3个工作分配给第3个人。
for(int i=0;i<n;i++)
cout << res[i] <<" ";
return 0;
}
相关推荐
★问题描述:设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij。试设计一个算法,为每一个人都分配1件不同的工作,并使总费用达到最小。 ★算法设计:设计一个算法,对于给定的工作费用,计算最佳工作...
该算法是用c++编写的,解决工作分配问题问题,希望对大家有用
这段代码是算法设计与分析中,工作分配问题的完整代码,已经验证过正确性了
算法导论 工作分配问题 回溯树 源码 实验报告 题目:设有n个任务有k个可并行工作的机器来完成。完成i需要时间为t_i,试设计算法找出这n个任务的最佳调度,使完成全部任务的时间最早。
回溯法之工作分配问题,直接可运行,python
工作分配问题综合性、设计性实验报告包含代码,结果,输出等等
工作分配问题:设有件工作分配给个人。将工作分配给第个人所需费用为。为每一个人分配一件不同的工作,并使总费用达到最小。
本文主要研究试卷的合理分配问题。试卷分配的合理性既是竞赛规则的要求,也是竞赛评判的公平性的重要保证。因此,解决试卷分配的合理性问题有很强的现实意义。本文所考察的考试涉及200余份试卷和12位评委,数据规模...
评卷的公平分配问题在当今社会占据着很重要的地位,以大学生数学建模的评卷为例,随着人们的日益关注,使得参赛学校和参赛的人数在不断的增加,而评委的人数有限,因而如何让评委公平合理的去评阅每一分试卷便成了...
C语言资源分配问题代码,算法设计与分析课程中的
住房分配问题论文住房分配问题论文住房分配问题论文住房分配问题论文住房分配问题论文住房分配问题论文住房分配问题论文住房分配问题论文住房分配问题论文
遗传算法解决多目标分配的MATLAB代码,感觉很有用,希望可以帮到有需要的朋友
N个人要完成N件工作,每个人完成工作的花费不同,利用回溯法设计出最优分配
有关资源分配的问题。数学建模的格式什么的可以借鉴一下。我们自己写的。题目比较简单。适合初学者学习一下。
下面是书中部分运输问题和分配问题测试用例:(写入in.txt中) # 3 4 10 2 20 11 12 7 9 20 2 14 16 18 15 25 5 5 15 15 10 # 3 4 3 11 3 10 1 9 2 8 7 4 10 5 7 4 9 3 6 5 6 # 3 4 8 4 1 2 6 9 4 7 5 3 4 3 7 25 26...
针对工作分配问题存在的种种矛盾,采用了c++编程
java编写的分支限界法解决作业分配问题,有完整的测试文件、java文件和测试结果文件,还附有详细的算法设计说明。良心资源,值得拥有!
(Java实现) 工作分配问题.rar