51. N-Queens
来源:互联网 发布:宏业清单计价软件 编辑:程序博客网 时间:2024/05/21 22:55
The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.
Given an integer n, return all distinct solutions to the n-queens puzzle.
Each solution contains a distinct board configuration of the n-queens' placement, where 'Q'
and '.'
both indicate a queen and an empty space respectively.
For example,
There exist two distinct solutions to the 4-queens puzzle:
[ [".Q..", // Solution 1 "...Q", "Q...", "..Q."], ["..Q.", // Solution 2 "Q...", "...Q", ".Q.."]]
1.我的解答 回溯
class Solution {public: bool valid(vector<int> vec, int layer){ for(int i = 0; i < layer; i++){ if(vec[i] == vec[layer]) return false; } for(int i = 0; i < layer; i++){ if(abs(layer - i) == abs(vec[layer] - vec[i])) return false; } return true; } void solve(vector<vector<int>>& result, vector<int>& vec, int n, int layer){ if(layer == n){ result.push_back(vec); return; } for(int i = 0; i < n; i++){ vec[layer] = i; if(valid(vec, layer)){ solve(result, vec, n, layer+1); } } } vector<vector<string>> solveNQueens(int n) { vector<vector<string>>res; if(n == 0) return res; vector<vector<int>>result; vector<int>vec(n,-1); int layer = 0; solve(result, vec, n, layer); res.reserve(result.size()); string s; for(int i = 0; i < n; i++) s += "."; for(int i = 0; i < result.size(); i++){ vector<string> str(n, s); for(int j = 0; j < result[i].size(); j++){ str[j][result[i][j]] = 'Q'; } res.push_back(str); } return res; }};
2.有大神做到4ms的,下次再次刷的时候再看吧
0 0
- 51. N-Queens && 52. N-Queens II
- 51. N-Queens/52. N-Queens II
- LeetCode 51. N-Queens
- LeetCode --- 51. N-Queens
- LeetCode 51.N-Queens
- [Leetcode] 51. N-Queens
- 51.N-Queens
- [leetcode] 51.N-Queens
- 51. N-Queens
- [leetcode] 51. N-Queens
- LeetCode 51. N-Queens
- 51. N-Queens
- leetcode 51. N-Queens
- 【LeetCode】51. N-Queens
- leetcode 51. N-Queens
- LeetCode 51. N-Queens
- 51. N-Queens
- LeetCode 51. N-Queens
- 安装opensuse14 并配置lamp
- POJ 3250 hair cut
- NOIP2007 矩阵取数游戏 [dp] [高精度]
- PC端和移动端相应Enter
- 对恶意APP"淘宝宝贝分享图"的逆向分析
- 51. N-Queens
- Java中的sleep() | wait() | notify() | notifyAll()
- java基础理论
- rails动态定义实例方法和类方法
- 常见的web安全问题及防御
- SD卡相关操作
- 81. Search in Rotated Sorted Array II
- 网教 7.蜜汁序列
- 第十三章 字符串 正则表达式