LeetCode 52 N-Queens II
来源:互联网 发布:程序员对笔记本尺寸 编辑:程序博客网 时间:2024/05/17 23:57
题意:
n皇后问题,与 http://blog.csdn.net/houserabbit/article/details/72758088 不同,本题指数出解的个数,不要求方案。
思路:
可以用一下比LeetCode 51更优化的搜索方法,每放置一个皇后,我们记录它可以攻击哪一列、以及通过斜线攻击到的第一行的某2个位置。这样在放置皇后的时候,是否能放置到某个位置就可以O(1)判断了。
代码:
class Solution {public: int totalNQueens(int n) { int *column = new int[n]; int *left = new int[n * 2]; int *right = new int[n * 2]; memset(column, 0, sizeof(column)); memset(left, 0, sizeof(left)); memset(right, 0, sizeof(right)); int ans = 0; dfs(0, n, column, left, right, &ans); return ans; }private: void dfs(int row, int total, int *column, int *left, int *right, int *ans) { if (row == total) { ++(*ans); return; } for (int i = 0; i < total; ++i) { int l = i - row + total - 1, r = i + row; if (!column[i] && !left[l] && !right[r]) { column[i] = left[l] = right[r] = 1; dfs(row + 1, total, column, left, right, ans); column[i] = left[l] = right[r] = 0; } } }};
阅读全文
0 0
- 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: N-Queens II
- LeetCode : N-Queens II
- [Leetcode] N-Queens II
- 【leetcode】N-Queens II
- LeetCode: N Queens II
- [LeetCode]N-Queens II
- LeetCode - N-Queens II
- LeetCode:N-Queens II
- 【leetcode】N-Queens II
- LeetCode:N-Queens II
- Leetcode: N-Queens II
- Windows Socket套接字(四)-Windows套接字错误代码
- jquery利用attr、prop方法获取、设置input的checked属性
- 带音效的时钟,并有天气的功能,运用天气接口、农历、星期几
- key,primary key unique key的区别
- 借助Java动态反射机制 创建类
- LeetCode 52 N-Queens II
- 自定义Toast实现多次触发只显示一次toast使用改良
- mybatis trim标签用法
- lintcode(184)最大数
- 刷清橙OJ--A1034.孪生素数对
- 事务基础详解
- Ajax的错误调试
- 第3章 编程问题 3.3节 9
- Android之SharedPreferences详解