社区讨论

帮我看看我要疯了!!

学术版参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@lo97ahj2
此快照首次捕获于
2023/10/28 06:44
2 年前
此快照最后确认于
2023/10/28 06:44
2 年前
查看原帖
设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为Cij。试设计一个算法,为每一个人都分配1件不同的工作,并使总费用达到最小。 设计一个算法,对于给定的工作费用,计算最佳工作分配方案,使总费用达到最小。
输入格式 第一行有1个正整数n(1≤n≤20)。
接下来的n行,每行n个数,表示工作费用。
输出格式 一个整数,表示最小总费用```cpp #include<bits/stdc++.h> using namespace std; int n,b[30][30],minn=0,sum; int a[101],vis[101]; void f(int k) { if(k>n) { for(int i=1;i<=n;i++) { sum+=b[i][a[i]]; minn=min(sum,minn); } sum=0; return; } for(int i=1;i<=n;i++) { if(vis[i]==0) { a[k]=i; vis[i]=1; f(k+1); vis[i]=0; } } } int main() { cin>>n; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { cin>>b[i][j]; } } f(1); cout<<minn; return 0; }
CPP

回复

4 条回复,欢迎继续交流。

正在加载回复...