52. N-Queens II
来源:互联网 发布:云进销存软件哪个好 编辑:程序博客网 时间:2024/05/18 02:55
Description:
Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
Thought:
从第一行开始尝试性摆放皇后
如果到第 i 列时,与之前的皇后都不冲突,那么则从下一行进行尝试
如果冲突则尝试第 i+1 列,依次递推,直到第 n 行摆放完毕,方案数+1
注意,由于使用递归的方法,所以result需要设置成全局变量,使得它能正常+1
还有一点,使用一维数组,默认每一个元素的数值代表该下标行皇后摆放的位置,减少了开销
Code:
class Solution {private:vector<int> result;public:int totalNQueens(int n) {result.push_back(0);int* maps = new int[n];setQueens(n, 0, maps);return result[0];}void setQueens(int rows, int n, int maps[]) {if (rows == n) {result[0] += 1;return;}for (int i = 0; i < rows; i++) {maps[n] = i;if (check(maps,n)) {setQueens(rows, n + 1, maps);}}}bool check(int maps[],int rows) {for (int i = 0; i < rows; i++) {if (maps[i] == maps[rows] || abs(maps[i] - maps[rows]) == abs(i - rows)) return false;//对于当前摆放的之前每一行都进行比较,不要i与i+1比较,会漏掉一些情况}return true;}};
阅读全文
0 0
- 52.N-Queens II
- 52. N-Queens II
- 52. N-Queens II
- 52. N-Queens II
- 52. N-Queens II
- 52. N-Queens II
- 52. N-Queens II
- 52. N-Queens II
- 52. N-Queens II
- 52. N-Queens II
- 52. N-Queens II
- 52. N-Queens II
- 52. N-Queens II
- 52. N-Queens II
- 52. N-Queens II
- 52. N-Queens II
- 52. N-Queens II
- 52. N-Queens II
- SQL 新人入门 (从基础框架走起)
- 无穷小和无穷大·漫画
- mysql-5.7.20-winx64忘记密码
- 面向对象程序设计上机练习二(函数模板)
- kuangbin专题五 并查集 POJ2912 Rochambeau
- 52. N-Queens II
- 171213之项目错误总结3
- SQL 、MySql 查询前几年、几天、几小时的数据
- vlan是什么?怎么创vlan?
- 基于XGBoost的特征选择原理与实战
- 后端解决跨域问题
- java中的字符串以及java中常用的系统方法
- Java面试题整理
- [kuangbin带你飞]专题一 简单搜索 (17/1000)