1295 N皇后问题
1295 N皇后问题
在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于再n×n的棋盘上放置n个皇后,任何2个皇后不妨在同一行或同一列或同一斜线上。
给定棋盘的大小n (n ≤ 13)
输出整数表示有多少种放置方法。
8
92
#include<cstdio> #include<iostream> #include<cstdlib> #include<iomanip> using namespace std; bool d[100]= {0},b[100]= {0},c[100]= {0}; int sum=0,a[100]; int search(int); int n; int print(); int main() {cin>>n;search(1); cout<<sum; //从第1个皇后开始放置 } int search(int i) {int j;for (j=1; j<=n; j++) //每个皇后都有8位置(列)可以试放if ((!b[j])&&(!c[i+j])&&(!d[i-j+7])) //寻找放置皇后的位置{ //由于C++不能操作负数组,因此考虑加7//放置皇后,建立相应标志值a[i]=j; //摆放皇后b[j]=1; //宣布占领第j列c[i+j]=1; //占领两个对角线d[i-j+7]=1;if (i==n) print(); //8个皇后都放置好,输出else search(i+1); //继续递归放置下一个皇后b[j]=0; //递归返回即为回溯一步,当前皇后退出c[i+j]=0;d[i-j+7]=0;} } int print() {int i;sum++; //方案数累加1 }
转载于:https://www.cnblogs.com/lyqlyq/p/6607587.html
1295 N皇后问题相关推荐
- n皇后问题JS实现(N-Queens)
n皇后问题作为经典的面试题,今天在LeetCode刷到,解法比较直接,回溯递归.其他解法咱也不会.... Leetcode地址:https://leetcode.com/problems/n-quee ...
- 回溯 皇后 算法笔记_算法笔记_04_回溯
设计思想: (1)适用:求解搜索问题和优化问题. (2)搜索空间:数,节点对应部分解向量,可行解在树叶上. (3)搜索过程:采用系统的方法隐含遍历搜索树. (4)搜索策略:深度优先,宽度优先,函数优先 ...
- C语言局部搜索算法(爬山法,模拟退火法,遗传算法)求解八皇后问题
C语言局部算法求解八皇后问题 写在前面 八皇后问题及局部搜索算法 爬山法(hill-climbing searching) 算法介绍 代码实现 退火法(simulated annealing) 算法介 ...
- 递归/回溯:八皇后问题N-Queens
N皇后问题是计算机科学中最为经典的问题之一,该问题可追溯到1848年,由国 际西洋棋棋手马克斯·贝瑟尔于提出了8皇后问题. 将N个皇后放摆放在N*N的棋盘中,互相不可攻击,有多少种摆放方式,每种摆 放 ...
- 八皇后的一个回溯递归解法
解法来自严蔚敏的数据结构与算法. 代码如下: #include <iostream> using namespace std; const int N = 8;//皇后数 int coun ...
- Prolog学习:数独和八皇后问题
上一篇简单介绍了下Prolog的一些基本概念,今天我们来利用这些基本概念解决两个问题:数独和八皇后问题. 数独 数独是一个很经典的游戏: 玩家需要根据n×n盘面上的已知数字,推理出所有剩余空格的数字, ...
- N皇后问题的位运算求解——目前最快的方法
核心代码如下: 1 void test(int row, int ld, int rd) 2 { 3 int pos, p; 4 if ( row != upperlim ) 5 { 6 pos = ...
- UVa 167(八皇后)、POJ2258 The Settlers of Catan——记两个简单回溯搜索
UVa 167 题意:八行八列的棋盘每行每列都要有一个皇后,每个对角线上最多放一个皇后,让你放八个,使摆放位置上的数字加起来最大. 参考:https://blog.csdn.net/xiaoxiede ...
- 带你轻而易举的学习python——八皇后问题
首先我们来看一下这个著名的八皇后问题 八皇后问题:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. 在这个问题提出之后人们又将 ...
最新文章
- 表格转化为Latex代码
- 设计模式 — Overview
- Kindeditor富文本编辑器使用
- qt mysql 系统时间_使用QT和参数在SQLite数据库中插入日期时间
- gentoo安装记录[20050216]
- win7系统显卡在哪查看
- 使用 XAML 格式化工具:XAML Styler
- iPhone 12刚发布,黄牛就出动:蓝色最火,加价一千是普遍水平
- 会计考计算机哪些知识,2017会计从业考试《会计电算化》考点之计算机网络基本知识...
- 腾讯围棋AI绝艺战胜DeepZenGo又夺一冠
- Python关键点常识
- “康园圈--互联网+校园平台“项目之拓展手机客户端
- openvswitch安装、基本操作
- 【Unity3D】Android 打包 ① ( Android 编译选项 | 安装 Android Build Support 模块 )
- pythondocker——外部无法访问,报错:该网页无法正常运作
- 3D 打印没那么玄乎
- 3dmax2020软件安装教程【搬运转载】
- 用 OpenCV 检测猫脸
- 点击切换图标(收藏和取消收藏)
- php请求纯文本,php – 使用纯文本回退发送HTML简报
热门文章
- mysql 取左_MySQL select语句从字符串左侧获取5个字符
- c语言16进制按10进制输出,C语言编程:写一个函数,输入一个16进制数,输出相应的10进制数。...
- 为什么要要使用MyBatis
- SpringCloud Gateway的工作方式
- HashMap默认大小和扩容后的大小
- 后端技术:消息队列MQ/JMS/Kafka相关知识介绍
- 分布式数据库技术基础:分布透明性相关知识
- 手机技巧:手机关掉这个开关,一下能省2G内存,再也不怕卡顿死机
- 进程与线程的区别:最浅显易懂的解释
- java math round小数_Java——Math的round方法