【一天一道LeetCode】#52. N-Queens II
2016-05-17 14:55
441 查看
一天一道LeetCode系列
(一)题目
Follow up for N-Queens problem.![](http://www.leetcode.com/wp-content/uploads/2012/03/8-queens.png)
Now, instead outputting board configurations, return the total number of distinct solutions.
(二)解题
具体思路参考【一天一道LeetCode】#51. N-Queens/* 与N-Queens不同的事,这题只要求输出摆放方式的个数,因此对程序只需要做小的改动 */ class Solution { public: int count = 0;//记录次数 vector<pair<int, int>> queens;//存放已摆放的皇后的坐标值 int totalNQueens(int n) { int *a = new int ;//确保每一列只有一个皇后 memset(a,0,n*sizeof(int)); backtrc(a, 0, n); return count; } bool isValid(vector<pair<int,int>> queens , int row,int col)// { if (queens.empty()) return true; for (int i = 0; i < queens.size();i++) { if (abs(row- queens[i].first) == abs(col-queens[i].second)) { return false; } } return true; } void backtrc(int a[], int row, int n)//row确保每一行只有一个皇后 { if (row == n)//如果摆放完n行,则退出 { count++;//次数加1 return; } for (int i = 0; i < n; i++) { if (a[i] == 0&&isValid(queens, row, i))//保证了同一行,同一列,同一对角线只有一个Q { a[i] = 1; queens.push_back(pair<int, int>(row, i)); backtrc(a, row + 1, n); //回溯 a[i] = 0; queens.pop_back(); } } } };
相关文章推荐
- UVa136 Ugly Numbers (priority_queue)
- 坑爹的ndk-build
- UICollectionView实现无限滚动(理解花了我不少时间)
- 【一天一道LeetCode】#51. N-Queens
- 【一天一道LeetCode】#51. N-Queens
- 1.UIAlertController
- hdu3436 Queue-jumpers(Splay)
- UIProgressView进度条
- BlockingQueue的使用
- UISegmentedControl的用法
- druid1.0.19使用注意事项
- UINavgationController中覆写preferredStatusBarStyle方法不执行的问题
- 如果在Scope中的Preview中发起一个query请求
- EXC_BAD_ACCESS on UIAlertview code=1
- 25个优秀的UI设计资源下载
- java GUI 图形界面编程
- UIBezierPath精讲(二)
- mui 浏览器跨域实现
- 304. Range Sum Query 2D - Immutable
- 2016 UESTC Training for Dynamic Programming Q - 柱爷的宝藏 斜率优化