题目链接:Codeforces 431B Shower Line
模拟 + 枚举下一个排列。
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int main()
{
int arr[6], G[6][6], _max = 0, temp = 0;
for(int i = 1; i <= 5; i++)
{
for(int j = 1;j <= 5; j++)
scanf("%d", &G[i][j]);
arr[i] = i;
}
do
{
temp = G[arr[1]][arr[2]] + G[arr[3]][arr[4]] + G[arr[2]][arr[1]] + G[arr[4]][arr[3]];
temp += G[arr[2]][arr[3]] + G[arr[4]][arr[5]] + G[arr[3]][arr[2]] + G[arr[5]][arr[4]];
temp += G[arr[3]][arr[4]] + G[arr[4]][arr[3]];
temp += G[arr[4]][arr[5]] + G[arr[5]][arr[4]];
_max = max(_max, temp);
}while(next_permutation(arr + 1, arr + 6));
printf("%d\n", _max);
return 0;
}