#include<iostream> using namespace std; int map[8][8]={0}; int ct=0; int safe_ab(int a,int b) { for(int i=0;i<8;i++)//行判断 { if(map[a][i]==3) { return 0; } } for(int i=0;i<8;i++)//列判断 { if(map[i][b]==3) { return 0; } } for(int i=0;i<8;i++) for(int j=0;j<8;j++)//对角线 { if((i+j)==(a+b)) { if(map[i][j]==3) { return 0; } } } for(int i=0;i<8;i++) for(int j=0;j<8;j++)//对角线 { if((i-j)==(a-b)) { if(map[i][j]==3) { return 0; } } } return 1; } void dfs(int a,int b) { if(a==8) { ct++; for(int i=0;i<8;i++) { for(int j=0;j<8;j++) { cout<<map[i][j]<<" "; } cout<<endl; } cout<<"========================================="<<endl; return; } for(int i=0;i<8;i++) { if(safe_ab(a,i)) { map[a][i]=3; dfs(a+1,0); map[a][i]=0; } } } int main() { dfs(0,0); cout<<ct; return 0; }