暴力搜索 因为数据太弱 并不想去加什么剪枝
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
#define met(a, b) memset(a, b, sizeof(a))
const int N = 25;
int g[N][N], vis[N], n, ans;
void dfs (int k, int sum);
int main ()
{
while (cin >> n)
{
for (int i=0; i<n; i++)
for (int j=0; j<n; j++)
cin >> g[i][j];
ans = 0;
met (vis, 0);
vis[0] = 1;
dfs (0, 0);
cout << ans << endl;
}
return 0;
}
void dfs (int k, int sum)
{
int x = sum;
for (int i=0; i<n; i++)
{
if (vis[i]) x -= g[k][i];
else x += g[k][i];
}
if (x > ans) ans = x;
for (int i=k+1; i<n; i++)
{
if (!vis[i])
{
vis[i] = 1;
dfs (i, x);
vis[i] = 0;
}
}
}