题目描述:Work Assignment
 
设有n件工作分配给n个人。将工作i 分配给第j 个人所需的费用为Cij。试设计一个算法,为每一个人都分配1 件不同的工作,并使总费用达到最小。 设计一个算法,对于给定的工作费用,计算最佳工作分配方案,使总费用达到最小。

输入

第一行有1 个正整数n (1≤n≤30)。接下来的n行,每行n个数,表示工作费用。

输出

的最小总费用。

样例输入

3
10 2 3
2 3 4
3 4 5

样例输出

9

解题思路:按照工作任务DFS搜索即可。注意要标记每个人只能做一项工作。

 // Work Assignment.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h" #include <iostream>
#include <algorithm>
#include <cstring>
using namespace std; const int MAX = ;
int n,ans, map[MAX][MAX],vis[MAX]; //第index项工作,现在前index-1项工作总费用
void DFS(int index, int sum)
{
//cout << "index:" << index << "\tsum:" << sum << "\tans:" << ans << endl;
if (index >= n)
{
ans = min(ans, sum);
return;
}
if (sum > ans) return; //分配给第i个人
for (int i = ; i < n; i++)
{
if (!vis[i])
{
vis[i] = ;
DFS(index + , sum + map[index][i]);
vis[i] = ;
} } } int main()
{
while (cin>>n && n)
{
for (int i = ; i < n;i++)
for (int j = ; j < n; j++)
cin >> map[i][j]; ans = 0x3f3f3f3f;
memset(vis, , sizeof(vis)); for (int i = ; i < n; i++)
{
vis[i] = ;
DFS(, map[][i]);
vis[i] = ;
} cout << ans << endl; } return ;
}

ACM-Work Assignment的更多相关文章

  1. ACM学习历程—HDU 5289 Assignment(线段树 || RMQ || 单调队列)

    Problem Description Tom owns a company and he is the boss. There are n staffs which are numbered fro ...

  2. [论文笔记] Methodologies for Data Quality Assessment and Improvement (ACM Comput.Surv, 2009) (1)

    Carlo Batini, Cinzia Cappiello, Chiara Francalanci, and Andrea Maurino. 2009. Methodologies for data ...

  3. 2015 Multi-University Training Contest 1 - 1002 Assignment

    Assignment Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=5289 Mean: 给你一个数列和一个k,求连续区间的极值之 ...

  4. 杭电ACM分类

    杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...

  5. hdu 2853 Assignment KM算法

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2853 Last year a terrible earthquake attacked Sichuan ...

  6. HDU 5874 Friends and Enemies 【构造】 (2016 ACM/ICPC Asia Regional Dalian Online)

    Friends and Enemies Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  7. HDU 5289 Assignment rmq

    Assignment 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5289 Description Tom owns a company and h ...

  8. hdu6006 Engineer Assignment 状态dp 定义dp[i][s]表示前i个工程状态为s可以执行的最大工程数。s表示前i个工人选走了s状态的工程师。

    /** 题目:hdu6006 Engineer Assignment 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6006 题意:已知n个工程,每个需要某 ...

  9. HDU 5289 Assignment (ST算法区间最值+二分)

    题目链接:pid=5289">http://acm.hdu.edu.cn/showproblem.php?pid=5289 题面: Assignment Time Limit: 400 ...

  10. HDU 5289 Assignment [优先队列 贪心]

    HDU 5289 - Assignment http://acm.hdu.edu.cn/showproblem.php?pid=5289 Tom owns a company and he is th ...

随机推荐

  1. B. Uniqueness 删除最小区间内的元素使得剩余元素唯一

    B. Uniqueness time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  2. B. Light bulbs

    B. Light bulbs There are NNN light bulbs indexed from 000 to N−1N-1N−1. Initially, all of them are o ...

  3. java学习-初级入门-面向对象④-类与对象-类与对象的定义和使用2

    我们继续学习类与对象,上一篇我们定义了  坐标类(Point), 这次我们在Point的基础上,创建一个圆类(Circle). 案例:创建一个圆类 题目要求: 计算圆的周长和面积:求判断两个圆的位置关 ...

  4. CMake查找第三方库路径

    问题 一直都有一个问题,就是基于Windows下使用CMake构建VS工程时,CMake是如何查找到第三方库所在的路径的呢? 答案 今天重新想起这个问题,就拿构建Vtk的VS工程测试了一下, 才发现是 ...

  5. LIS问题

    LIS定义LIS(Longest Increasing Subsequence)最长上升子序列 .一个数的序列bi,当b1 < b2 < … < bS的时候,我们称这个序列是上升的. ...

  6. 三级联动下拉列表——php 、Ajax

    主页面:<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF- ...

  7. 使用JavaScript和Canvas打造真实的雨滴效果

    使用JavaScript和Canvas打造真实的雨滴效果 寸志 · 1 年前 我最近搞了一个有趣的项目——rainyday.js .我认为这个项目并不怎么样,而且,事实上这是我第一次尝试接触一些比弹窗 ...

  8. Linux shell 学习随笔2

    1.几个重要的快捷键 (1) Tab  命令补齐或文件补齐 vtas@vtas-computer:~$ ca[tab][tab] cal calibrate_ppa canberra-gtk-play ...

  9. 使用vim编译.cpp文件

    一.编写代码 1.打开命令行终端,输入vim test.cpp,新建了一个文件叫做“test.cpp”:如果以前已经建立过这个文件,则是打开这个名字的文件. 2.按回车进入编辑界面,输入i进入编辑模式 ...

  10. eos 智能合约开发体验

    eos编译安装 eos 特性 数据存储 eos投票智能合约开发 eos投票智能合约部署测试 注意避坑 eos编译安装 ERROR: Could not find a package configura ...