工作分配问题
来源:互联网 发布:重庆大学的校园网域名 编辑:程序博客网 时间:2024/05/21 10:23
问题:设有n件工作分配给n个人,将工作i分配给第j个人所需的菲佣为cij,试设计一个算法,为每一个人分配一件不同的工作,并使总费用达到最小。
输入:第一行有一个正整数n,接下来n行,每行n个数,表示工作费用。
输入:最小总费用
例子:输入:3
10 2 3
2 3 4
3 4 5
输出:9
代码:
#include<iostream>
using namespace std;
bool Take1(int pay,int leastpay)
{
if(pay>=leastpay)
return 0;
return 1;
}
void BackTrack(int t,int n,int **m,int *x,int pay,int &leastpay)
{
int i;
if(t>n)
{
if(pay<leastpay)
leastpay=pay;
return ;
}
for(i=1;i<n+1;i++)
{
if(x[i]==0)
{
pay+=m[t][i];
x[i]=1;
if(Take1(pay,leastpay))
BackTrack(t+1,n,m,x,pay,leastpay);
pay-=m[t][i];
x[i]=0;
}
}
}
int main()
{
int n,i,j,pay=0,leastpay=100;
cin>>n;
int **m,*x;
m=new int*[n+1];
x=new int[n+1];
for(i=0;i<n+1;i++)
{
m[i]=new int[n+1];
x[i]=0;
}
for(i=1;i<n+1;i++)
for(j=1;j<n+1;j++)
cin>>m[i][j];
BackTrack(1,n,m,x,pay,leastpay);
cout<<leastpay;
system("pause");
return 0;
}
- 工作分配问题
- 工作分配问题
- 17085 工作分配问题
- 工作分配问题
- 工作分配问题
- 【9503】工作分配问题
- 工作分配问题
- 工作分配问题
- 工作分配问题
- 工作分配问题
- 工作分配问题
- 工作分配问题 Java 回溯
- 【回溯法】工作分配问题
- 工作分配问题 assignment problem
- 工作分配问题 解题报告
- 匹配(工作分配问题)
- 工作分配问题pascal程序
- 应用分枝限界解决工作分配问题
- Enocean RPS报文发送例程
- Mac OS X 中 Bochs的安装及使用
- Bitmap文件格式以及Opengl描画
- java操作mongodb基础(查询 排序 输出list)
- struts2学习笔记之十二(控制标签)
- 工作分配问题
- java内存泄漏问题
- shell 脚本之切换用户
- 深搜---Sum it up
- matlab把rgb转为颜色名
- PRID64干啥的
- javascript中的each遍历
- 看门狗
- Lucene的作用以及应用