51. N-Queens
来源:互联网 发布:魅族手机备份数据 编辑:程序博客网 时间:2024/06/17 00:22
51. N-Queens
- Total Accepted: 62479
- Total Submissions: 225904
- Difficulty: Hard
The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.
Given an integer n, return all distinct solutions to the n-queens puzzle.
Each solution contains a distinct board configuration of the n-queens' placement, where 'Q'
and '.'
both indicate a queen and an empty space respectively.
For example,
There exist two distinct solutions to the 4-queens puzzle:
[ [".Q..", // Solution 1 "...Q", "Q...", "..Q."], ["..Q.", // Solution 2 "Q...", "...Q", ".Q.."]]
分析:n皇后问题很经典,以前上算法课的时候,老师曾仔细讲过。照着以前书上的讲解实现了一下
这里的约束条件是:任何两个皇后都不能位于同一条对角线上,也不能在同一直线上。这里安排第k个皇后放在第k行,我们要做的是找到它放在第k行的哪一列。
这里定义一个全局的变量vector<int> X,X[k]代表第k个皇后放在第k行的第X[k]列。不能在同一对角线上的表达式abs(i-k)!=abs(X[i]-X[k]),不能在同一
直线上的表达是X[i]!=X[k].这里约束条件可以用一个bool函数Place表述。进入此过程时,已经设置好了k-1个皇后的位置,此时检验第k个皇后的位置X[k]
是否与前k-1个位置有冲突。
有了place函数后,用回溯解决n皇后问题。如下所示,其中print函数将一个可行解表达出来。
- 51. N-Queens && 52. N-Queens II
- 51. N-Queens/52. N-Queens II
- LeetCode 51. N-Queens
- LeetCode --- 51. N-Queens
- LeetCode 51.N-Queens
- [Leetcode] 51. N-Queens
- 51.N-Queens
- [leetcode] 51.N-Queens
- 51. N-Queens
- [leetcode] 51. N-Queens
- LeetCode 51. N-Queens
- 51. N-Queens
- leetcode 51. N-Queens
- 【LeetCode】51. N-Queens
- leetcode 51. N-Queens
- LeetCode 51. N-Queens
- 51. N-Queens
- LeetCode 51. N-Queens
- Retrofit中解析XML
- Spring boot之hello word
- 暑期社会实践心得
- [Android] RatingBar 基本使用
- hdu4750 Count The Pairs(并查集+二分+最小生成树思想)
- 51. N-Queens
- 元音字符复制
- 龙头
- Unity3D如何减少安装包大小
- HDU1394-Minimum Inversion Number
- poj 1789 最小生成树变形
- Vue.js——基于$.ajax实现数据的跨域增删查改【4】
- 插入排序之直接插入排序(Java篇)
- HDU5119 动态规划入门题