暴力方法
复杂度: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]);
}
}
京公网安备 11010502036488号