4 条题解
-
0
using namespace std; int a[100],x[100],n;//a数组用来存放每个皇后的列坐标 void dfs(int step){//放第step个皇后,也代表该皇后的行坐标 if(step==n+1){ for(int i=1;i<=n;i++) cout<<a[i]<<" "; cout<<endl; return; } for(int i=1;i<=n;i++){//当前皇后选择的列坐标,当前皇后的坐标为:step,i int j; for(j=1;j<step;j++){//与之前的皇后做对比,之前皇后的坐标为:j,a[j] if(i==a[j]||abs(step-j)==abs(i-a[j]))//如果存在同列或者同对角线 break;//就跳出此次循环,继续下个位置的尝试 } if(j==step){//说明这个位置与前面的皇后都不冲突 a[step]=i; dfs(step+1); } } return; } int main(){ cin>>n; dfs(1); return 0; }
信息
- ID
- 829
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 5
- 标签
- 递交数
- 132
- 已通过
- 52
- 上传者