Network Saboteur
深搜,不算裸,只是你要判断这两个集合一不一样.....代码:
#include<iostream> using namespace std; int a[1100][1100],b[1100]; int n; int maxn=0; void dfs(int k,int sum) { b[k]=1;//标记.... for(int i=1;i<=n;i++) { if(b[i]) { sum-=a[k][i];//判重 } else { sum+=a[k][i]; } } maxn=max(sum,maxn);//找最大值 for(int i=k+1;i<=n;i++) { b[i]=1; dfs(i,sum);//回溯 b[i]=0; } } int main() { cin>>n; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { cin>>a[i][j]; } } dfs(1,0);//搜索 cout<<maxn<<endl; }
A了QwQ