n皇后问题作为经典的面试题,今天在LeetCode刷到,解法比较直接,回溯递归。其他解法咱也不会。。。。

Leetcode地址:https://leetcode.com/problems/n-queens/description/

n皇后问题:在n*n的棋盘格中放置那个棋子,使得这n个棋子不在同一行,不在同一列,不在同一对角线,不在同一斜对角线上,找出所有可行的结果集。

解题思路:1.先把回溯算法写出来

     2.用一个数组储存临时结果,写个函数判断该棋子所在位置是否符合要求。

代码如下:

/*** @param {number} n* @return {string[][]}*/
//回溯
var solveNQueens = function(n) {var res=[];var curr=[];//临时储存其中一个结果for(var i=0;i<n;i++){curr[i]=new Array();for(var j=0;j<n;j++){curr[i][j]='.'}}backtrack(curr,res,0)return res;
};
var backtrack = function(curr,res,row){if(curr.length===row){var c=[];for(var i=0;i<curr.length;i++){c.push(curr[i].join(''));}res.push(c);return ;}//遍历每一行所有元素for(var col=0;col<curr.length;col++){//判断该位置是否有效if(isValid(row,col,curr)){curr[row][col]="Q"backtrack(curr,res,row+1);curr[row][col]="."}}};
var isValid=function(row,col,curr){for(var i=0;i<row;i++)//列if(curr[i][col]==='Q') return false;for(var i=row-1,j=col-1;i>=0 && j>=0;i--,j--)//对角线if(curr[i][j]==="Q") return false;//斜对角线for(var i=row-1,j=col+1;i>=0 && j<curr.length ; i--,j++){if(curr[i][j]==="Q") return false;}return true;};

转载于:https://www.cnblogs.com/xingguozhiming/p/9572361.html

n皇后问题JS实现(N-Queens)相关推荐

  1. 八皇后时间复杂度_回溯算法 | 追忆那些年曾难倒我们的八皇后问题

    文章收录在公众号:bigsai,关注更多干货和学习资源 记得点赞.在看 前言 说起八皇后问题,它是一道回溯算法类的经典问题,也可能是我们大部分人在上数据结构或者算法课上遇到过的最难的一道题-- 在这里 ...

  2. N皇后问题的两个最高效的算法

    N皇后问题是一个经典的问题,在一个N*N的棋盘上放置N个皇后,每行一个并使其不能互相攻击(同一行.同一列.同一斜线上的皇后都会自动攻击). 一. 求解N皇后问题是算法中回溯法应用的一个经典案例 回溯算 ...

  3. 【算法】N Queens Problem

    /* ** 目前最快的N皇后递归解决方法 ** N Queens Problem ** 试探-回溯算法,递归实现 */ #include "stdafx.h" #include & ...

  4. 多字段回溯 mysql_回溯算法 | 追忆那些年曾难倒我们的八皇后问题

    前言 说起八皇后问题,它是一道回溯算法类的经典问题,也可能是我们大部分人在上数据结构或者算法课上遇到过的最难的一道题-- 在这里插入图片描述 第一次遇到它的时候应该是大一下或者大二这个期间,这个时间对 ...

  5. N皇后问题——通俗易懂地讲解(C++)

    注:参考程序猿小灰,hackbuteer1 八皇后问题,是一个古老而著名的问题,是回溯算法的典型例题.该问题是十九世纪著名的数学家高斯1850年提出: 在8X8格的国际象棋上摆放八个皇后,使其不能互相 ...

  6. 【恋上数据结构】回溯、剪枝(八皇后、n皇后)、LeetCode51.N皇后、LeetCode52.N皇后 II

    回溯 回溯(Back Tracking) 提出八皇后问题(Eight Queens) 初步思路一:暴力出奇迹 初步思路二:根据题意减少暴力程度 初步思路三:回溯法(回溯+剪枝) 四皇后 - 回溯法图示 ...

  7. 爬山法、随机重启爬山法、模拟退火算法对八皇后问题和八数码问题的性能测试...

    代码地址:https://github.com/laiy/AI/tree/master/awesome-search 一些前提: 1. 首先要明确这些算法并不是用于解决传统的搜索问题的(环境是可观察的 ...

  8. 3.2 回溯法—N皇后问题

    1. 问题描述 在n×nn\times nn×n的棋盘上摆放nnn个皇后,使任意两个皇后都不能处于同一行.同一列或同一斜线上 2. 问题分析 下以求解4皇后问题为例,分析4皇后问题的排列树以及回溯过程 ...

  9. 八皇后问题python实现

    八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行.纵行或斜线上.八皇后 ...

最新文章

  1. Java 序列化的高级认识
  2. php基础标签大全,HTML基础之HTML常用标签
  3. Exadata上oracle binary的make日志
  4. 怎样打造一个分布式数据库
  5. 第七十九期:阿里程序员感慨:码农们过去暴富有多轻松,现在赚钱就有多辛苦
  6. USACO-Section2.2 Party Lamps
  7. 杭电 2838 牛叉的树状数组
  8. 手机内置摄像头接线图解_1000以下手机哪款好?8款千元以内性价比最高的手机推荐...
  9. matlabR2016a与solidworks2016联合仿真的经验分享
  10. 安装yasm(汇编编译器)和 nasm
  11. 安装office,错误1706。安装程序找不到所需文件。请检查网络连接或CD-ROM驱动器。
  12. 2019 AI顶会时间表
  13. 二次开发平台PMSCADA展示版
  14. 为什么我们现在不再需要杀毒软件了?
  15. matlab指数形式复数运算,[转载]MATLAB学习(4)——复数及其运算
  16. 为什么选择电阻式温度传感器呢
  17. Orangleliu的2018年小结
  18. unity 使用LineRenderer实现飘带飞舞的效果
  19. JS如何判断一个数组是否为空、是否包含某个值
  20. 有限元方法求解二维拉普拉斯方程C++实现

热门文章

  1. 2022-2028年中国基金业投资分析及前景预测报告
  2. java通过异常处理错误,java基础之通过错误处理异常
  3. 解释为什么用梯度下降而不是直接求导数为0的解
  4. 白化(预处理步骤)【转】
  5. 禁用GPU版本TensorFlow,切换到CPU版本TensorFlow。
  6. TensorFlow Frontend前端
  7. AIoT 2020 年分析
  8. CentOS7:Thrift的安装
  9. Python:numpy实现生成随机数,忽略warnings
  10. java正则表达式 匹配%号_java正则表达式匹配带有括号的电话号为什么匹配不上...