当前位置: 首页 > news >正文

1756:八皇后

题目

总时间限制: 1000ms 内存限制: 65536kB

描述

会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。
对于某个满足要求的8皇后的摆放方法,定义一个皇后串a与之对应,即a=b1b2...b8,其中bi为相应摆法中第i行皇后所处的列数。已经知道8皇后问题一共有92组解(即92个不同的皇后串)。
给出一个数b,要求输出第b个串。串的比较是这样的:皇后串x置于皇后串y之前,当且仅当将x视为整数时比y小。

输入

第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数b(1 <= b <= 92)

输出

输出有n行,每行输出对应一个输入。输出应是一个正整数,是对应于b的皇后串。

样例输入

2
1
92

样例输出

15863724
84136275

题意

输入数据组数和b,输出八皇后的第b个串

思路

这题可以用深度优先搜索和递归,用数组a来表示棋盘,其中a[i][j]=1表示在第i行第j列放置了皇后。
用数组sum 来存储所有找到的解,其中 sum[k][i] 表示第k个解中第i行皇后所在的列号。
从第1行开始,逐行尝试放置皇后,对于每一行,尝试所有8个可能的列,位置对于每个位置,检查是否安全(不会被其他皇后攻击)
如果当前行找不到安全位置,则回溯到上一行,撤销上一行的皇后放置,尝试下一个可能的位置,接着继续向下搜索。
j函数检查三个方向:第y列,(x,y)位置的左上方向对角线,(x,y)位置的右上方向检查对角线。
当8个皇后全部放置,计数器ans加1,用sum数组记录每个皇后所在的列号。

代码

#include<bits/stdc++.h>
using namespace std;
int n,a[100][100]={0},b,sum[100][100]={0},ans=0;
bool j(int x,int y){//检查函数//检查列for(int i=1;i<=8;i++){if(a[i][y]==1) return false;}//检查左上对角线for(int i=x,j=y;i>=1&&j>=1;i--,j--){if(a[i][j]==1) return false;}//检查右上对角线for(int i=x,j=y;i>=1&&j<=8;i--,j++){if(a[i][j]==1) return false;}return true;//如果所有检查都通过,说明位置安全
}
//搜索函数
void d(int x){//如果已经成功放置了8个皇后就终止if(x>8){ans++;//解的数量加1for(int i=1;i<=8;i++){for(int j=1;j<=8;j++){if(a[i][j]==1){sum[ans][i]=j;//记录第ans个解中第i行皇后在第j列break;}}}return;//返回上一层递归}//尝试在当前行的每一列放置皇后for(int y=1;y<=8;y++){if(j(x,y)==true){//如果当前位置安全a[x][y]=1;//放置皇后d(x+1);//递归放置下一行的皇后a[x][y]=0;//撤销当前放置的皇后}}
}
int main(){cin>>n;d(1);//从第1行开始生成for(int i=1;i<=n;i++){cin>>b;//输出第b个解for(int j=1;j<=8;j++){cout<<sum[b][j];}cout<<endl;}return 0;
}
http://www.zskr.cn/news/8250.html

相关文章:

  • 矩阵置零-leetcode
  • 重新开始配置hadoop等
  • 实用指南:kafka 原理详解
  • 网络编程-HTTP - 详解
  • 网络流初步浅谈:EK与Dinic
  • Spring框架事件驱动架构核心注解之@EventListener - 指南
  • FreeRTOS SMP 资料收集
  • 2025.9.19——卷9-10选择
  • ctfshow web 入门 php特性
  • 详细介绍:Git如何无痕上传当前项目最新状态从当前远程到另一个远程
  • 【qt】全局事件总线
  • 深入解析:React Device Detect 完全指南:构建响应式跨设备应用的最佳实践
  • ctfshow web89
  • ctfshow web90
  • web360
  • hbase的安装应用
  • ctfshow web357
  • 深入解析:Java全栈开发面试实录:从基础到微服务的实战解析
  • 谁会不爱低温静音 性能还更强的!酷睿Ultra 5 230F vs 锐龙5 9600X生产力、功耗、温度全方位对比
  • WPF viewmodel retrieve matched view /window
  • ctfshow web353
  • fxztgxj5.dll fxzrs4qj.dll fxztgxa5.dll fxzrs3qj.dll fxzpmc1.dll fxzrs2qj.dll fxzmpxa5.dll - 实践
  • 测试新手必学:10个让Bug无处遁形的黑盒测试技巧
  • 数据分类分级如何高效低成本落地?|高效智能的数据分类分级产品推荐(2025)
  • 文化课暂时计划
  • private void Form1_Load和 private void Form1_Activated 方法区别
  • BGP反射路由器
  • 完整教程:苹果WWDC25开发秘技揭秘:SwiftData3如何重新定义数据持久化
  • H5 页面与 Web 页面的制作方法 - 实践
  • Spring Cloud Gateway吞吐量优化