#include <iostream>
#include <stdio.h>
#include <string>
#include <cmath>
#include <string.h>
#include <set>
#include <algorithm>
using namespace std;
int road[20][20];
int visit[20];
int n;
int res;
int getans(){
int sum = 0;
for (int i = 0; i < n; ++i) {
if (!visit[i]) continue;
for (int j = 0; j < n; ++j) {
if (visit[j]) continue;
sum += road[i][j];
}
}
return sum;
}
void dfs(int ix){
if (ix == n){
res = max(res, getans());
return;
}
// 有两种选择,
visit[ix] = 1;
dfs(ix+1);
visit[ix] = 0;
dfs(ix+1);
}
int main(){
// freopen("../in.txt", "r", stdin);
cin>>n;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
cin>>road[i][j];
}
}
dfs(0);
cout<<res<<endl;
}
POJ 2531
最新推荐文章于 2020-07-04 15:32:57 发布