订单分配
订单分配
http://www.nowcoder.com/questionTerminal/3f495307bfca40e49b0e2b15b14ce923
暴力方法
复杂度:O(n*n!)
#include<bits/stdc++.h> using namespace std; double mp[15][15]; int n; int a[15]; int v[15]; int main() { scanf("%d",&n); for(int i = 0;i<n;i++) { for(int j = 0;j<n;j++) { scanf("%lf",&mp[i][j]); } a[i] = i; } double sum = 0; double ans = -1; do { sum = 0; for(int i = 0;i<n;i++) sum+=mp[i][a[i]]; if(sum>ans) { for(int i = 0;i<n;i++) v[i] = a[i]+1; ans = sum; } } while(next_permutation(a,a+n)); printf("%.2lf\n",ans); for(int i = 0;i<n;i++) { printf("%d %d\n",i+1,v[i]); } }