[Leetcode 52, Hard] N Queens II
来源:互联网 发布:淘宝每日好店怎么参加 编辑:程序博客网 时间:2024/06/04 18:24
Problem:
Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
Analysis:
Solutions:
C++:
bool IsSafeLean(int row, int col, vector<int> seizedColumns, int row_bound) { for(int i = 1; row - i >= 0 && col + i < row_bound; ++i) { if(seizedColumns[row - i] == col + i) return false; } for(int i = 1; row - i >= 0 && col - i >= 0; ++i) { if(seizedColumns[row - i] == col - i) return false; } return true; } void FindPlacements(vector<int> seizedColumns, int row, int row_bound, vector<vector<string> >& sols) { if(row == row_bound) { vector<string> placement; for(int i = 0; i < seizedColumns.size(); ++i) { string row = ""; for(int j = 0; j < row_bound; ++j) { if(j == seizedColumns[i]) row.push_back('Q'); else row.push_back('.'); } placement.push_back(row); } sols.push_back(placement); } else { for(int col = 0; col < row_bound; ++col) { if(!seizedColumns.empty()) { int index = 0; for(; index < seizedColumns.size(); ++index) { if(col == seizedColumns[index]) break; } if(index < seizedColumns.size() || (index == seizedColumns.size() && !IsSafeLean(row, col, seizedColumns, row_bound))) continue; } seizedColumns.push_back(col); FindPlacements(seizedColumns, row + 1, row_bound, sols); seizedColumns.erase(seizedColumns.end() - 1); } } } int totalNQueens(int n) { vector<vector<string> > sols; vector<int> seizedColumns; FindPlacements(seizedColumns, 0, n, sols); return sols.size(); }Java:
Python:
0 0
- [Leetcode 52, Hard] N Queens II
- leetcode hard模式专杀之52 N-Queens II
- Leetcode 52. N-Queens II (Hard) (cpp)
- Leetcode 51. N-Queens && 52. N-Queens II(Hard)
- 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
- 52. N-Queens II[hard]
- 52. N-Queens II Hard
- 52.leetcode N-Queens II(hard)[基于N-Queens修改返回值]
- LeetCode: N-Queens II
- LeetCode : N-Queens II
- [Leetcode] N-Queens II
- 【leetcode】N-Queens II
- jsp中textarea中输入文本存入数据库,然后按照输入的格式显示
- 字符串替换
- Error 0xc000007b while Running SqlTools
- [Leetcode 22, Medium] Generate Parentheses
- 记2015上交软件优才夏令营
- [Leetcode 52, Hard] N Queens II
- 几个java小问题
- 集合简单总结
- ListView的HeaderView
- 网页屏蔽Backspace事件,输入框不屏蔽
- [Leetcode 69, Medium] Sqrt(x)
- [Leetcode 24, Medium] Swap Nodes in Pair
- 用记事本写一个简单的java程序
- 如何学习C语言编程