UVa167 - The Sultan's Successors

2014-11-24 12:08:29 · 作者: · 浏览: 0

题目地址:点击打开链接

就是八皇后问题

#include 
  
   
#include 
   
     #include 
    
      using namespace std; int chess[8][8],visited[3][20]; int max_sum; void dfs(int cur,int sum) { if(cur==8) { if(sum>max_sum) max_sum=sum; return; } for(int i=0;i<8;++i) { if(!visited[0][i]&&!visited[1][i+cur]&&!visited[2][i-cur+8]) { visited[0][i]=visited[1][i+cur]=visited[2][i-cur+8]=1; dfs(cur+1,sum+chess[cur][i]); visited[0][i]=visited[1][i+cur]=visited[2][i-cur+8]=0; } } } int main() { int k; cin>>k; while(k--) { for(int i=0;i<8;++i) { for(int j=0;j<8;++j) cin>>chess[i][j]; } memset(visited,0,sizeof(visited)); max_sum=0; dfs(0,0); cout<