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;
}
相关推荐
在C++编程中,工作分配问题是一个典型的优化问题,它涉及到如何有效地将一系列任务分配给一组工作者,以达到最大效率或最小成本。这个问题在实际应用中广泛存在,比如任务调度、资源分配、项目管理等领域。下面我们...
工作分配问题在IT领域,尤其是算法设计与分析中是一个经典的话题。它涉及到如何高效地将一组任务或工作项分配给一组资源,以达到最优的效率或最短的完成时间。这个问题在很多实际场景中都有应用,如项目管理、任务...
★问题描述:设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij。试设计一个算法,为每一个人都分配1件不同的工作,并使总费用达到最小。 ★算法设计:设计一个算法,对于给定的工作费用,计算最佳工作...
工作分配问题是一个经典的优化问题,常见于计算机科学和运筹学领域,特别是在任务调度和资源分配的研究中。这个问题的目标是找到最优的任务分配策略,使得所有任务在最短的时间内完成。这里,我们有n个任务需要分配...
在这个"回溯法之工作分配问题"中,我们可以假设存在一个任务分配的问题,比如有若干个任务需要分配给一些工人,目标可能是使工作效率最大化或者满足特定条件。Python作为高度灵活的开发语言,非常适合实现这类算法。...
工作分配问题的回溯算法解决方案 工作分配问题是一个经典的组合优化问题,其目标是将工作分配给个人以使总费用达到最小。在这个问题中,我们使用回溯算法来解决工作分配问题。 工作分配问题的描述: 设有件工作...
在计算机科学领域,资源分配问题是一个重要的议题,尤其是在操作系统设计和优化中占据核心地位。C语言作为一门底层、高效且广泛应用的编程语言,是解决这类问题的理想工具。本主题将深入探讨C语言如何用于实现资源...
遗传算法是一种模拟生物进化过程的优化方法,常用于解决复杂问题,如多目标分配问题。在多目标分配问题中,我们需要找到一种策略,使得有限的资源(如人员、设备或资金)能有效地分配到多个目标(任务或项目)上,...
试卷分配问题的优化模型主要关注如何在满足竞赛规则和公平性的前提下,有效地分配大量试卷给评委进行评分。这个问题在大型比赛或者评估活动中至关重要,因为它直接影响到比赛的公正性和结果的准确性。 首先,问题的...
本主题以“工作分配优化的C++源码”为标题,表明我们将探讨如何利用C++编程语言解决这类问题。C++是一种强类型、面向对象的编程语言,它的性能强大,适用于开发需要高效运算和内存管理的应用。 工作分配问题通常...
1. **工作分配的重要性**:工作分配是组织管理的基础,它有助于明确职责,避免任务重叠或遗漏,提高工作效率,同时也有利于员工了解自己的工作范围,从而更好地规划工作时间和资源。 2. **部门划分**:部门是企业...
回溯法解决n作业分配问题 本文将详细介绍回溯法解决n作业分配问题的知识点。 问题描述 n作业分配问题是一种经典的组合优化问题。该问题的目标是将n个作业分配给n个不同的人,使得总时间最小。每个人完成每个作业...
作业分配问题通常涉及多个任务(作业)需要分配给多个工人(处理者),目标是优化某些性能指标,如最小化总工作时间或最大化总体效率。在本示例中,Java编程语言被用来实现这一算法,这表明我们可以利用Java的强大...
在“作业分配问题”中,我们通常需要解决的是如何将n个作业合理地分配给n个人,使得每个人都有一个作业,且每个作业只被一个人领取,这是一个典型的组合优化问题。 在这个C#实现的项目中,回溯算法被用来解决这个...
作业分配问题是一个经典的组合优化问题,其目标是将一组作业合理地分配给一组工人,使得每个工人负担的工作量尽可能均衡。 首先,我们要明确问题的定义:假设我们有n个作业和m个工人,每个作业有一个特定的完成时间...
在数学建模中,席位分配问题是一种常见的优化问题,涉及到如何公平且有效地将有限的资源(如席位)分配给不同的群体或个体。在这个场景下,我们关注的是三种不同的分配方法:惯例法、d’Hondt分配法和Q值法。这三种...
在IT领域,任务分配问题是一个常见的优化问题,它涉及到如何有效地将一组任务分配给一组执行者,以达到最佳效果或最小化成本。本项目聚焦于使用C++编程语言解决此类问题,具体采用了分支界限法和匈牙利算法两种经典...
在IT领域,优化问题是一个广泛研究的议题,而“WTA1_目标分配_遗传算法求解目标分配问题_”的标题明确指出我们要探讨的是如何使用遗传算法来解决目标分配问题。遗传算法是一种受到生物进化过程启发的全局优化技术,...
目标分配问题是一个典型的组合优化问题,常见于资源分配、任务调度等领域。问题的核心是将有限的目标(资源)有效地分配给多个竞争者(任务),以最大化某种性能指标,如效率、满意度或公平性。在实际应用中,可能有...
【物资分配问题】在灾情发生时,政府需要有效地分配有限的救灾物资,以确保公平性和合理性。数学建模在此类问题中起到了关键作用,通过数学模型和算法优化,能够解决大规模复杂分配难题。 首先,根据物资是否可以...