题目描述
设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij。试设计一个算法,为每一个人都 分配一件不同的工作,并使总费用达到最小。
设计一个算法,对于给定的工作费用,计算最佳工作分配方案,使总费用达到最小。
输入格式
由文件job.in给出输入数据。第一行有1个正整数n (1≤n≤20)。接下来的n行,每行n个数,第i行表 示第i个人各项工作费用。
输出格式
输出最小总费用
样例
样例输入
复制3 4 2 5 2 3 6 3 4 5样例输出
复制9_____________________________________________________________________________
写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
_____________________________________________________________________________
#include<bits/stdc++.h> using namespace std; int n,m,ans=INT_MAX; int a[25][25]; bool b[25]; void dfs(int h,int cnt){ if(cnt>ans)return; if(h==n+1){ ans=min(cnt,ans); return; } for(int i=1;i<=n;i++){ if(b[i])continue; b[i]=true; dfs(h+1,cnt+a[h][i]); b[i]=false; } } int main(){ cin>>n; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cin>>a[i][j]; } } dfs(1,0); cout<<ans; }