暴力搜索,但是注意,如果移到B种总结过变小就不需要继续搞了。。。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int maxn=1e5+5;
int ed[25][25];
int n,ans;
bool b[maxn];
inline void dfs(int s,int sum)
{
b[s] = true;
int temp = sum;
for(int i=1;i<=n;i++)
{
if(b[i])
temp -= ed[s][i];
else
temp += ed[s][i];
}
ans = max(ans, temp);
if(temp > sum)
{
for(int i=s+1;i<=n;i++)
dfs(i, temp);
}
b[s] = false;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>ed[i][j];
ans = 0;
dfs(1, 0);
cout<<ans<<endl;
return 0;
}