首页 > 其他分享 >回溯-N皇后

回溯-N皇后

时间:2022-11-01 17:33:12浏览次数:54  
标签:同一 斜线 回溯 问题 new 皇后

回溯算法其实就是暴力穷举算法,只不过暴力穷举采用了先拆解子问题,然后将子问题使用递归的方式进行求解,并且在不满足条件的情况下,有向上回溯的过程。

许多复杂的,规模较大的问题都可以使用回溯法。

回溯问题看起来比较复杂,但一般都有固定的套路。

据我个人的理解,回溯过程中需要明确以下几个问题

1.什么是合法的解

2.什么时候退出递归

3.什么时候需要回溯

下面我们使用经典的N皇后问题,来解读回溯算法的一般思路。

案例1:

按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。

n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。

给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。

每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。

 

 

现在我们来依次解决前面提出的三个问题

1.什么是N皇后问题合法的解

其实题意中已经非常明确,n皇后放在nxn的棋盘山,要求同一行、同一列、同一斜线都只能有一个皇后。

我们是按照每行一个皇后开始放置的,每一行肯定不会重复,我们只需要校验每一列、每一个45度斜线、每一个135度斜线没有重复的皇后即可。

我们定义三个set来判断列和两个斜线上的皇后数

  //列
private Set<Integer> columnSet = new HashSet<>();
    //45度上升对角线
private Set<Integer> diagonalSet1 = new HashSet<>();
    //135度下降对角线
private Set<Integer> diagonalSet2 = new HashSet<>();

 

标签:同一,斜线,回溯,问题,new,皇后
From: https://www.cnblogs.com/wangbin2188/p/16848520.html

相关文章

  • LeetCode 236. 二叉树的最近公共祖先 - 回溯的理解
    题目https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/思路自己做只摸到一些门道,还是靠随想录...代码:deflowestCommonAncestor(self,root:'......
  • leetcode(力扣) 78. 子集(回溯 & 巧妙解法)
    文章目录​​题目描述​​​​法一(巧妙暴力解)​​​​思路分析​​​​完整代码​​​​法二(回溯):​​​​思路分析​​​​完整代码​​题目描述给你一个整数数组nums......
  • leetcode(力扣) 491. 递增子序列(回溯 & 去重思路)
    文章目录​​题目描述​​​​思路分析​​​​完整代码​​题目描述给你一个整数数组nums,找出并返回所有该数组中不同的递增子序列,递增子序列中至少有两个元素。你可以......
  • 可观测可回溯 | Continuous Profiling 实践解析
    作者:虚镜概述ContinuousProfiling在软件开发生命周期的位置CI/CD的概念非本文重点,不解释了。从上图可以看出。ContinuousProfiling(持续性能分析,下文简称为CP)是生产向开......
  • 可观测可回溯 | Continuous Profiling 实践解析
    作者:虚镜概述ContinuousProfiling在软件开发生命周期的位置CI/CD的概念非本文重点,不解释了。从上图可以看出。ContinuousProfiling(持续性能分析,下文简称为CP)是生产向开......
  • N皇后问题--解法一(递归遍历斜线)
    importjava.util.*;importjava.math.*;publicclassSolution{TreeSet<Integer>ready=newTreeSet<Integer>();HashSet<Integer>res=newHashSet<......
  • BZOJ 4809(皇后-N皇后)
    Description众所不知,rly现在不会玩国际象棋。但是,作为一个OIer,rly当然做过八皇后问题。这里再啰嗦几句,皇后可以攻击到同行同列同对角线,在n*n的方格中摆n个皇后使其互不攻击......
  • 回溯剪枝
    39.组合总和&40.组合总和II前者数组中的数字可以重复,后者不可以;前者数组中无重复数字,后者有;前者不需要排序,后者需要;前者:dfs(candidates,i,target-candidat......
  • 回溯法 转载自carl的github
    参与本项目,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!17.电话号码的字母组合力扣题目链接给定一个仅包含数字2-9的字符串,返回所有它能表示的字......
  • 回溯算法
    视频链接:https://www.bilibili.com/video/BV1yh411m7Yn/?spm_id_from=333.337.search-card.all.click&vd_source=09ee57e950c1151087156a55e2d0aa26回溯算法的基本过程:进......