项目分配
Table of Contents
项目分配
时间限制:C/C++语言 1000MS;其他语言 3000MS 内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
某公司雇有N名员工,每名员工可以负责多个项目,但一个项目只能交由一名员工负责。现在该公司接到M个项目,令A_{i,j}表示第i名员工负责第j个项目所带来的收益,那么如果项目分配得当,总收益最大是多少?
输入
第一行包含两个整数N和M,1≤N,M≤1000。
接下来N行,每行包含M个整数,第i行的第j个整数表示A{i,j},1≤A{i,j}≤1000。
输出
输出总收益的最大值。
样例输入
3 3
1 3 3
2 2 2
3 2 1
样例输出
9
# include<iostream>
using namespace std;
int n,m,cost =0;
int x[1001],c[1001][1001];
void work(int i, int count){
if(i>n&&count>cost){
cost=count;
return ;
}
if(count>cost){
for(int j=1;j<=m;j++){
if(x[j]==0){
x[j] = 1;
work(i+1, count+c[i][j]);
x[j] =0;
}
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>c[i][j];
c[i][j] = -c[i][j];
x[j] = 0;
}
cost+=c[i][i];
}
work(1, 0);
cout<<-cost<<endl;
return 0;
}