1295 N皇后问题

时间限制: 2 s
空间限制: 128000 KB
题目等级 : 黄金 Gold

题目描述 Description

在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于再n×n的棋盘上放置n个皇后,任何2个皇后不妨在同一行或同一列或同一斜线上。

输入描述 Input Description

给定棋盘的大小n (n ≤ 13)

输出描述 Output Description

输出整数表示有多少种放置方法。

样例输入 Sample Input

8

样例输出 Sample Output

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皇后问题相关推荐

  1. n皇后问题JS实现(N-Queens)

    n皇后问题作为经典的面试题,今天在LeetCode刷到,解法比较直接,回溯递归.其他解法咱也不会.... Leetcode地址:https://leetcode.com/problems/n-quee ...

  2. 回溯 皇后 算法笔记_算法笔记_04_回溯

    设计思想: (1)适用:求解搜索问题和优化问题. (2)搜索空间:数,节点对应部分解向量,可行解在树叶上. (3)搜索过程:采用系统的方法隐含遍历搜索树. (4)搜索策略:深度优先,宽度优先,函数优先 ...

  3. C语言局部搜索算法(爬山法,模拟退火法,遗传算法)求解八皇后问题

    C语言局部算法求解八皇后问题 写在前面 八皇后问题及局部搜索算法 爬山法(hill-climbing searching) 算法介绍 代码实现 退火法(simulated annealing) 算法介 ...

  4. 递归/回溯:八皇后问题N-Queens

    N皇后问题是计算机科学中最为经典的问题之一,该问题可追溯到1848年,由国 际西洋棋棋手马克斯·贝瑟尔于提出了8皇后问题. 将N个皇后放摆放在N*N的棋盘中,互相不可攻击,有多少种摆放方式,每种摆 放 ...

  5. 八皇后的一个回溯递归解法

    解法来自严蔚敏的数据结构与算法. 代码如下: #include <iostream> using namespace std; const int N = 8;//皇后数 int coun ...

  6. Prolog学习:数独和八皇后问题

    上一篇简单介绍了下Prolog的一些基本概念,今天我们来利用这些基本概念解决两个问题:数独和八皇后问题. 数独 数独是一个很经典的游戏: 玩家需要根据n×n盘面上的已知数字,推理出所有剩余空格的数字, ...

  7. N皇后问题的位运算求解——目前最快的方法

    核心代码如下: 1 void test(int row, int ld, int rd) 2 { 3 int pos, p; 4 if ( row != upperlim ) 5 { 6 pos = ...

  8. UVa 167(八皇后)、POJ2258 The Settlers of Catan——记两个简单回溯搜索

    UVa 167 题意:八行八列的棋盘每行每列都要有一个皇后,每个对角线上最多放一个皇后,让你放八个,使摆放位置上的数字加起来最大. 参考:https://blog.csdn.net/xiaoxiede ...

  9. 带你轻而易举的学习python——八皇后问题

    首先我们来看一下这个著名的八皇后问题 八皇后问题:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. 在这个问题提出之后人们又将 ...

最新文章

  1. 表格转化为Latex代码
  2. 设计模式 — Overview
  3. Kindeditor富文本编辑器使用
  4. qt mysql 系统时间_使用QT和参数在SQLite数据库中插入日期时间
  5. gentoo安装记录[20050216]
  6. win7系统显卡在哪查看
  7. 使用 XAML 格式化工具:XAML Styler
  8. iPhone 12刚发布,黄牛就出动:蓝色最火,加价一千是普遍水平
  9. 会计考计算机哪些知识,2017会计从业考试《会计电算化》考点之计算机网络基本知识...
  10. 腾讯围棋AI绝艺战胜DeepZenGo又夺一冠
  11. Python关键点常识
  12. “康园圈--互联网+校园平台“项目之拓展手机客户端
  13. openvswitch安装、基本操作
  14. 【Unity3D】Android 打包 ① ( Android 编译选项 | 安装 Android Build Support 模块 )
  15. pythondocker——外部无法访问,报错:该网页无法正常运作
  16. 3D 打印没那么玄乎
  17. 3dmax2020软件安装教程【搬运转载】
  18. 用 OpenCV 检测猫脸
  19. 点击切换图标(收藏和取消收藏)
  20. php请求纯文本,php – 使用纯文本回退发送HTML简报

热门文章

  1. mysql 取左_MySQL select语句从字符串左侧获取5个字符
  2. c语言16进制按10进制输出,C语言编程:写一个函数,输入一个16进制数,输出相应的10进制数。...
  3. 为什么要要使用MyBatis
  4. SpringCloud Gateway的工作方式
  5. HashMap默认大小和扩容后的大小
  6. 后端技术:消息队列MQ/JMS/Kafka相关知识介绍
  7. 分布式数据库技术基础:分布透明性相关知识
  8. 手机技巧:手机关掉这个开关,一下能省2G内存,再也不怕卡顿死机
  9. 进程与线程的区别:最浅显易懂的解释
  10. java math round小数_Java——Math的round方法