poj 2531(dfs)

时间:2023-03-09 16:54:44
poj 2531(dfs)

题目链接:http://poj.org/problem?id=2531

思路:由于N才20,可以dfs爆搞,枚举所有的情况,复杂度为2^(n)。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; int map[][];
int belong[];
int n,ans; void dfs(int pos,int sum)
{
if(pos==n+){
ans=max(ans,sum);
return ;
}
belong[pos]=;
int tmp=;
for(int i=;i<=pos;i++){
if(belong[i]==)tmp+=map[pos][i];
}
dfs(pos+,sum+tmp); belong[pos]=;
tmp=;
for(int i=;i<=pos;i++){
if(belong[i]==)tmp+=map[pos][i];
}
dfs(pos+,sum+tmp);
} int main()
{
while(~scanf("%d",&n)){
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
scanf("%d",&map[i][j]);
ans=;
memset(belong,-,sizeof(belong));
dfs(,);
printf("%d\n",ans);
}
return ;
}