題目地址:點擊打開鏈接
就是八皇後問題
#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<