Question1:Nqueen问题

首先我们需要明确该问题规则:
所谓Nqueen,中文名N皇后问题,指在一个N*N的棋盘上放置棋子,要求该棋子独占一列一行,且其左上方与右上方没有棋子,具体解决方法如下。

对问题进行拆分可把问题分成两个部分
外部是对该棋子所有可能出现位置进行遍历,,具体遍历方法有点类似于for循环中嵌套多个for循环,层层递进式的,但该方法时间复杂度高,因此需要对其进行优化,但思想不变,
内部则是对该格子判断是否满足放入皇后的要求

先看一个四皇后问题:

1,先定义内部方法isDangerous,判断棋子是否满足填入条件

2,接下来开始遍历
从第一行开始,发现第一个格子就满足,放入棋子。然后下一行开始遍历,直到第三个才满足。在接下来的一行没有可满足的格子,这个时候就需要回溯到上一行,在上一行的皇后处继续向后遍历,若遍历完后仍无,则再次回溯到上上一行遍历,直到找到符合条件的格子为止,这时候放入一个棋子,下一行继续原来操作,值得注意的是回溯到上一行,需要对该行进行clear清空操作。
当row = N时,则表明该表满足条件,打印出该表,然后继续从第N行开始向上回溯遍历,和上面操作步骤相同,也是为了遍历出新的满足条件的格子。
代码为

printArr方法是打印出该数组表

分治回溯--Nqueen相关推荐

  1. 分治回溯算法----八皇后问题

    八皇后问题:在一个8×8的棋盘中,放入8个皇后棋子,要求同行同列同斜线不能有重复的皇后棋子,八皇后问题一共有92种解法.如图所示:即八皇后问题的一个解. //分治回溯算法解决八皇后问题 public ...

  2. 数据结构与算法学习④(哈夫曼树 图 分治回溯和递归)

    数据结构与算法学习④(哈夫曼树 图 回溯和递归 数据结构与算法学习④ 1.哈夫曼树 1.1.相关概念 1.2.哈夫曼树的构建 1.3.哈夫曼编码 1.4.面试题 2.图 2.1.图的相关概念 2.2. ...

  3. 算法思想之递归分治回溯

    参考文档 递归思想 思想 描述 递归 当需要重复地多次计算相同的问题,通常可以采用递归或循环.递归是在一个函数内部调用这个函数自身. 递归的本质是把一个问题分解成两个或多个小问题.(注:当多个小问题存 ...

  4. 二叉树的深度 | 分治 +回溯 + 迭代

    二叉树的最大深度 leetcode https://leetcode.cn/problems/maximum-depth-of-binary-tree/ 回溯基本思路 二叉树的最大深度就是 : 从根节 ...

  5. 动态规划从理论到实践-深入理解贪心/分治/回溯/动态规划的算法思想

    摘要:本文主要讲解常见的四种算法,分别为贪心算法:第一步选择最优的走法,算法不能做到全局最优:分治算法:一种处理问题的思想,使用递归来实现:回溯算法:我们枚举所有的解,找到满足期望的解,可以把求解过程 ...

  6. 【水】对于算法的个人理解

    奈何手边资料少之又少 唯有脑洞了 问题 P-problem NP-problem NP NPC complete NPH hard 解决方法 贪心 渴婴问题 动态规划 石子 矩阵连乘 回溯 nquee ...

  7. 双非院校非科班的学弟,刚刚拿到了腾讯、网易、美团等大厂Offer

    △Hollis, 一个对Coding有着独特追求的人△ 这是Hollis的第 359 篇原创分享 作者 l 霜华 来源 l Hollis(ID:hollischuang) 本文来自作者投稿,作者是是双 ...

  8. 中科院博士论文致谢部分走红,感动无数网友,其实沉下心来,你我何尝不是前程万里

    背景 近日,中国科学院自动化所一博士论文的致谢部分在网上引发热议.作者在<致谢>中回顾自己如何一路走出小山坳.和命运抗争的故事,打动了大批网友.黄国平今日独家发文,讲述自己成长经历,并向网 ...

  9. 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)

    常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...

  10. 【算法】1.递归实现二分查找

    一.什么是二分查找 假设给定的数组中的元素是一个有序的状态,比如是单调递减或者是单调递增的状态,对于这种情况可以使用二分查找来完成.即二分查找需要满足两个条件: (1)数组存储 (2)元素有序,单调性 ...

最新文章

  1. 赠书 | 人工智能变“人工智障”?关于因果关系的新科学
  2. asp.net学习笔记·将数据库中的数据保存在EXCEL文件中
  3. 【转载】Linux命令-自动挂载文件/etc/fstab功能详解[转]
  4. 关于Web前端面试的小技巧,千万不要错过!
  5. boost::core::typeinfo的用法实例
  6. 前台分页,感觉一般还能优化
  7. linux 网络协议栈变化,ZZ Linux网络协议栈学习
  8. 沃尔玛宣布与TikTok达成直播带货合作?
  9. HTML5CSS3网页设计仿微信通讯录页
  10. arcgis图像和坐标系统一致但不重合_分享∣Arcgis中62个常用技巧系列二(21-40技巧)...
  11. C# 按层选择 AutoCAD二次开发
  12. 中国绿色专利分地区统计数据
  13. 对Excel选择性粘贴中的跳过空单元选项容易造成的两种误解
  14. [026] 微信公众帐号开发教程第2篇-微信公众帐号的类型(普通和会议)
  15. 游密科技携手华为云,探讨5G时代下音视频领域的创新变革
  16. 计算机乘法算法流程,布斯乘法算法
  17. Ruby学习记录 - 安装Ruby
  18. 硬件开发:嵌入式系统知识和接口技术(值得收藏)
  19. 超融合之VMware vSAN企业级超融合解决方案
  20. pthread_cancel引起程序段错误

热门文章

  1. office 论文 页码_Word中的论文页码怎么设置?
  2. IcedTea6版本1.8
  3. 为什么亚马逊无货源是国际电商新时代
  4. ubuntu安装中的小tips
  5. 方正璞华:硬核攻关,自主创新,推动印前处理自动化云流程走向世界
  6. 打印程序在计算机上的应用程序,无法打印显示打印机程序服务没有运行解决办法...
  7. IT行业发展凶猛,你的工作会被人工智能取代吗?
  8. jw player去掉logo 二次开发
  9. ipad 邮箱服务器端口,ipad邮箱设置,牛排,YAHOO邮箱(后缀为yahoo
  10. JAVA 开发规范