竞赛笔记竞赛C++2024-01-16竞赛笔记Minecraft-Sep2024-01-162024-03-18 123456789101112131415161718192021222324252627282930313233343536373839//n皇后问题#include<bits/stdc++.h>using namespace std;int a[10001];//保存皇后的位置int b[10001],c[10001],d[10001];//标记同列和对角线int sum;//方案总数void print(){ sum++; for(int i=1;i<=8;i++) { cout<<a[i]; if(i!=8) cout<<" "; else cout<<endl; }} void s(int i){ for(int j=1;j<=8;j++)//试探八个位置 { if(!b[j] && !c[i+j] && !d[i-j+7])//下标不为负,+7 { a[i]=j; b[j]=1;//j列被占用 c[i+j]=1;//对角线被占用 d[i-j+7]=1; if(i==8) print();//放完 else s(i+1); b[j]=0;//回溯 c[i+j]=0; d[i-j+7]=0; } } }int main(){ s(1); cout<<sum<<endl;}