<LeetCode OJ> 52. N-Queens II
来源:互联网 发布:行知学园高田马场地址 编辑:程序博客网 时间:2024/05/29 16:36
Total Accepted: 39648 Total Submissions: 103862 Difficulty: Hard
Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
Subscribe to see which companies asked this question
Show Similar Problems
分析:
就是八皇后问题,最典型的回溯法问题
依次摆放1到N个皇后,每个皇后所在行均从第一列到第N列试探性摆放:每摆一次检查是否与已经摆好的皇后冲突,如果不冲突继续摆下一个皇后,如果冲突以后的皇后均不在以当前皇后的位置继续摆下去,即返回上一个皇后的下一个位置继续摆,
本文参考:<C/C++算法>回溯法及其常见面试题
class Solution {public: //位置冲突算法 bool isConflict(int a[], int n)//a位置数组,n皇后个数 { int i = 0, j = 0; for (i = 2; i <= n; ++i)//i:位置 { for (j = 1; j <= i - 1; ++j)//j:位置 { if ((a[i] == a[j]) || (abs(a[i] - a[j]) == i - j))//1:在同一列上;2:在对角线上 return false; //冲突 } } return true;//不冲突 } //八皇后问题:回溯算法(递归版) void QueensN(int a[],int k,int n) //参数k:递归摆放第k个皇后 { int i = 0; if (k > n) //k>n:即k>8表示最后一个皇后摆放完毕 ++cnt; else{ //8个皇后未全部摆放完毕 for (i = 1; i <= n; ++i)//摆放第k个皇后时(转下一行) { //依次从列顶端开始搜索,一直到列底端,直到找到合适位置,如果未找到,自动返回上层递归(回溯) a[k] = i; if (isConflict(a, k)) QueensN(a,k + 1,n);//不冲突,递归摆放下一个皇后 } } } int totalNQueens(int n) { cnt=0; int a[9]={0}; QueensN(a,1,n); return cnt; }private: int cnt;};
注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!
原文地址:http://blog.csdn.net/ebowtang/article/details/50585984
原作者博客:http://blog.csdn.net/ebowtang
1 0
- <LeetCode OJ> 52. N-Queens II
- LeetCode OJ:N-Queens II
- LeetCode OJ - N-Queens II
- LeetCode OJ N-Queens II
- LeetCode 52. N-Queens II
- LeetCode --- 52. N-Queens II
- LeetCode 52.N-Queens II
- [Leetcode] 52. N-Queens II
- [leetcode] 52.N-Queens II
- [leetcode] 52. N-Queens II
- LeetCode 52. N-Queens II
- leetcode 52. N-Queens II
- LeetCode 52. N-Queens II
- LeetCode 52. N-Queens II
- leetcode.52. N-Queens II
- LeetCode 52. N-Queens II
- [LEETCODE]52. N-Queens II
- [LeetCode] 52. N-Queens II
- Xcode的Architecture参数的意思
- UIControl及其子类
- select、poll、epoll之间的区别总结及相关资料整理
- 深度学习入门,以及它在物联网和智慧城市中的角色
- 2016年1月面试过程中碰到的问题
- <LeetCode OJ> 52. N-Queens II
- js阻止事件冒泡
- IOS 界面间传递参数 代码示例
- 键盘弹出与收起
- Spring之FactoryBean
- int和Integer有什么区别
- Android studio V1.0安装篇
- ViewPager的实现:通过HorizontalScrollView
- 欢迎使用CSDN-markdown编辑器