N皇后

题目描述:

八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种计算机语言可以解决此问题。

现在你需要解决n皇后问题,给你一个n*n的棋盘,问你有多少方案可以放入n个皇后。

输入格式:

每行一个正整数N≤10,表示棋盘和皇后的数量

输出格式:

共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。

输入样例:

5

输出样例:

10

提示:

1<=n<=12

底下可能有点乱(深搜无敌)

#include<bits/stdc++.h>
int rank[20];
bool vis[20];
int n,cnt=0;
void dfs(int pos){if(pos==n+1){//递归边界条件 cnt++;return;}for(int i=1;i<=n;i++){//枚举每行 if(vis[i]==false){bool flag=true;for(int j=1;j<pos;j++){//枚举pos之前的皇后 if(abs(pos-j)==abs(i-rank[j])){flag=false;break;}}if(flag){rank[pos]=i;//pos列在i行 vis[i]=true;dfs(pos+1); vis[i]=false;}}}
}
int main(){scanf("%d",&n);dfs(1);printf("%d",cnt);return 0;
} 

N皇后问题 (c++)相关推荐

  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格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. 在这个问题提出之后人们又将 ...

  10. C语言回溯算法解决N皇后问题

    回溯算法的模型是 x++, not satisfy ? x-- : continue. 代码中x作列号,y[x]保存第x列上皇后放置的位置. 1 #include<stdio.h> 2 # ...

最新文章

  1. cad怎么查找未闭合_CAD无法填充的这四种方法肯定能解你燃眉之急
  2. thinkphp5 图片压缩旋转_【好工具】在线免费无限制的PDF处理工具(转换、编辑、分割、合并、压缩)...
  3. Java编程中值得注意的对象引用现象
  4. mysql explain 结果值介绍
  5. C# object 转 Intptr, Intptr 转 object
  6. VB获取一个文件夹中指定的文件或文件夹名称到列表
  7. 计算机开机报一长两短,电脑开机发出一长两短报警声启动不了怎么办
  8. 根据url 参数,页面显示不同背景图片
  9. 精细化用电侧能源管控 解码光伏电站运维痛点
  10. windows无法telnet解决办法
  11. 利用python,20行代码即可实现照片墙,还可以生成爱心形状哟
  12. 使用计算机的好习惯教学设计,《我的好习惯》教学设计
  13. win7配置C语言VS2010,开发Windows7软件的绝配:Visual Studio 2010
  14. MySQL命令行登录不上但是sqlyog能成功连接
  15. Python数据分析与机器学习9-Seaborn之多变量分析
  16. 蓝桥杯真题 19省2-年号字串 小明用字母 A 对应数字 1, B 对应 2,以此类推,用 Z 对应 26。对于 27以上的数字,小明用两位或更长位的字符串来对应,例如 AA 对应 27, AB
  17. 浙江万里学院计算机与科学技术,浙江万里学院计算机与信息学院介绍
  18. iphone11如何强制关机 苹果11手机一键强制重启方法教程
  19. 联通物联卡为什么没有网络_联通物联网卡怎么样?联通物联卡的查询官网是什么?...
  20. 在电脑上开启网络校时服务

热门文章

  1. 亚马逊测评,三分钟带你吃透全过程。
  2. 零基础开发AI应用--华为HiAI的应用
  3. c语言建筑工地管理系统,C语言课设之建筑工地信息管理系统.doc
  4. linux的tar zcvf,xvf的区别
  5. 学猫叫计算机普我试试,原唱版的《学猫叫》吗,我们一起学猫叫
  6. spring-aop bean的创建
  7. 树莓派3B+ 刷Nexmon 库
  8. android版本升级流程,基于Android系统的版本升级方法及其系统与流程
  9. C++string中的find()函数
  10. 【SLAM】LIO-SAM解析——流程图(1)