#include<iostream> #include<cstring> #include<string> using namespace std; int vis[3][8*8];//vis[0][]表示同一列,vis[1][]和vis[2][]表示两个对角线; int tot; void search(int cur) { if(cur==8) tot++; for(int i=0;i<8;i++) { if(!vis[0][i]&&!vis[1][cur+i]&&!vis[2][cur-i+8]) { vis[0][i]=vis[1][cur+i]=vis[2][cur-i+8]=1; search(cur+1); vis[0][i]=vis[1][cur+i]=vis[2][cur-i+8]=0; } } } int main() { int n; tot=0; memset(vis,0,sizeof(vis)); search(0); cout<<tot<<endl; }