分治回溯--Nqueen
Question1:Nqueen问题
首先我们需要明确该问题规则:
所谓Nqueen,中文名N皇后问题,指在一个N*N的棋盘上放置棋子,要求该棋子独占一列一行,且其左上方与右上方没有棋子,具体解决方法如下。
对问题进行拆分可把问题分成两个部分
外部是对该棋子所有可能出现位置进行遍历,,具体遍历方法有点类似于for循环中嵌套多个for循环,层层递进式的,但该方法时间复杂度高,因此需要对其进行优化,但思想不变,
内部则是对该格子判断是否满足放入皇后的要求
先看一个四皇后问题:
1,先定义内部方法isDangerous,判断棋子是否满足填入条件
2,接下来开始遍历
从第一行开始,发现第一个格子就满足,放入棋子。然后下一行开始遍历,直到第三个才满足。在接下来的一行没有可满足的格子,这个时候就需要回溯到上一行,在上一行的皇后处继续向后遍历,若遍历完后仍无,则再次回溯到上上一行遍历,直到找到符合条件的格子为止,这时候放入一个棋子,下一行继续原来操作,值得注意的是回溯到上一行,需要对该行进行clear清空操作。
当row = N时,则表明该表满足条件,打印出该表,然后继续从第N行开始向上回溯遍历,和上面操作步骤相同,也是为了遍历出新的满足条件的格子。
代码为
printArr方法是打印出该数组表
分治回溯--Nqueen相关推荐
- 分治回溯算法----八皇后问题
八皇后问题:在一个8×8的棋盘中,放入8个皇后棋子,要求同行同列同斜线不能有重复的皇后棋子,八皇后问题一共有92种解法.如图所示:即八皇后问题的一个解. //分治回溯算法解决八皇后问题 public ...
- 数据结构与算法学习④(哈夫曼树 图 分治回溯和递归)
数据结构与算法学习④(哈夫曼树 图 回溯和递归 数据结构与算法学习④ 1.哈夫曼树 1.1.相关概念 1.2.哈夫曼树的构建 1.3.哈夫曼编码 1.4.面试题 2.图 2.1.图的相关概念 2.2. ...
- 算法思想之递归分治回溯
参考文档 递归思想 思想 描述 递归 当需要重复地多次计算相同的问题,通常可以采用递归或循环.递归是在一个函数内部调用这个函数自身. 递归的本质是把一个问题分解成两个或多个小问题.(注:当多个小问题存 ...
- 二叉树的深度 | 分治 +回溯 + 迭代
二叉树的最大深度 leetcode https://leetcode.cn/problems/maximum-depth-of-binary-tree/ 回溯基本思路 二叉树的最大深度就是 : 从根节 ...
- 动态规划从理论到实践-深入理解贪心/分治/回溯/动态规划的算法思想
摘要:本文主要讲解常见的四种算法,分别为贪心算法:第一步选择最优的走法,算法不能做到全局最优:分治算法:一种处理问题的思想,使用递归来实现:回溯算法:我们枚举所有的解,找到满足期望的解,可以把求解过程 ...
- 【水】对于算法的个人理解
奈何手边资料少之又少 唯有脑洞了 问题 P-problem NP-problem NP NPC complete NPH hard 解决方法 贪心 渴婴问题 动态规划 石子 矩阵连乘 回溯 nquee ...
- 双非院校非科班的学弟,刚刚拿到了腾讯、网易、美团等大厂Offer
△Hollis, 一个对Coding有着独特追求的人△ 这是Hollis的第 359 篇原创分享 作者 l 霜华 来源 l Hollis(ID:hollischuang) 本文来自作者投稿,作者是是双 ...
- 中科院博士论文致谢部分走红,感动无数网友,其实沉下心来,你我何尝不是前程万里
背景 近日,中国科学院自动化所一博士论文的致谢部分在网上引发热议.作者在<致谢>中回顾自己如何一路走出小山坳.和命运抗争的故事,打动了大批网友.黄国平今日独家发文,讲述自己成长经历,并向网 ...
- 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)
常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...
- 【算法】1.递归实现二分查找
一.什么是二分查找 假设给定的数组中的元素是一个有序的状态,比如是单调递减或者是单调递增的状态,对于这种情况可以使用二分查找来完成.即二分查找需要满足两个条件: (1)数组存储 (2)元素有序,单调性 ...
最新文章
- 赠书 | 人工智能变“人工智障”?关于因果关系的新科学
- asp.net学习笔记·将数据库中的数据保存在EXCEL文件中
- 【转载】Linux命令-自动挂载文件/etc/fstab功能详解[转]
- 关于Web前端面试的小技巧,千万不要错过!
- boost::core::typeinfo的用法实例
- 前台分页,感觉一般还能优化
- linux 网络协议栈变化,ZZ Linux网络协议栈学习
- 沃尔玛宣布与TikTok达成直播带货合作?
- HTML5CSS3网页设计仿微信通讯录页
- arcgis图像和坐标系统一致但不重合_分享∣Arcgis中62个常用技巧系列二(21-40技巧)...
- C# 按层选择 AutoCAD二次开发
- 中国绿色专利分地区统计数据
- 对Excel选择性粘贴中的跳过空单元选项容易造成的两种误解
- [026] 微信公众帐号开发教程第2篇-微信公众帐号的类型(普通和会议)
- 游密科技携手华为云,探讨5G时代下音视频领域的创新变革
- 计算机乘法算法流程,布斯乘法算法
- Ruby学习记录 - 安装Ruby
- 硬件开发:嵌入式系统知识和接口技术(值得收藏)
- 超融合之VMware vSAN企业级超融合解决方案
- pthread_cancel引起程序段错误