枚举这120种情况
#include<cstring>
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 10;
int n,a,b;
int q[N];
bool st[N];
double ans = 3000;
double f[N][N];
int h[4];
string p[5] = {"甲","乙","丙","丁","戊"};
void dfs(int u)
{
if(u == n)
{
double temp = 0;
for(int i = 0 ,j = 0 ; i < n - 1 ; i ++,j++)
{
temp += f[j][q[i] - 1];
}
ans = min(ans ,temp);
if(ans == temp)
{
for(int i = 0 ; i < 4 ; i ++)
{
h[i] = q[i];
}
}
return;
}
for(int i = 1 ; i <= n ; i ++)
{
if(!st[i])
{
st[i] = true;
q[u] = i;
dfs(u + 1);
st[i] = false;
}
}
}
int main()
{
a = 4 ,b = 5;
for(int i = 0 ; i < a ; i ++)
{
for(int j = 0 ; j < b ; j ++)
{
cin >> f[i][j] ;
}
}
scanf("%d",&n);
dfs(0);
for(int i = 0 ; i < 4 ; i ++)
{
cout << "第" << i + 1 << "个出场的"<< p[h[i] - 1] <<endl;
}
cout << ans << endl;
return 0;
}
数据:
66.8 57.2 78 70 67.4
75.6 66 67.8 74.2 71
87 66.4 84.6 69.6 83.8
58.6 53 59.4 57.2 62.4
5