LeetCode 51 - N-Queens
来源:互联网 发布:淘宝客qq群介绍 编辑:程序博客网 时间:2024/05/16 11:04
N-Queens
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.."]]
My Code
class Solution {public: bool inline check(vector<string>& str, int i, int j, int n) { for (int ii = 0; ii < i; ii++) if (str[ii][j] == 'Q') return true; for (int ii = i - 1, jj = j - 1; ii >= 0 && jj >= 0; ii--, jj--) if (str[ii][jj] == 'Q') return true; for (int ii = i - 1, jj = j + 1; ii >= 0 && jj < n; ii--, jj++) if (str[ii][jj] == 'Q') return true; return false; } void doSolve(vector<vector<string> >& strs, vector<string>& str, int i, int j, int n) { if (i == n || j == n) return; // false -> no clash bool flag = check(str, i, j, n); // Clash if (flag == true) doSolve(strs, str, i, j + 1, n); else { str[i][j] = 'Q'; if (i == n - 1) strs.push_back(str); else doSolve(strs, str, i + 1, 0, n); str[i][j] = '.'; doSolve(strs, str, i, j + 1, n); } } vector<vector<string> > solveNQueens(int n) { vector<string> str(n, string(n, '.')); vector<vector<string> > strs; doSolve(strs, str, 0, 0, n); return strs; }};Runtime: 8 ms
0 0
- [leetcode 51] N-Queens
- LeetCode(51) N-Queens
- leetcode-51-N-Queens
- leetcode 51: N-Queens
- LeetCode 51: N-Queens
- LeetCode 51 - N-Queens
- Leetcode 51 N-Queens
- LeetCode 51 N-Queens
- leetcode(51):N-Queens
- LeetCode 51 N-Queens
- Leetcode 51 N-Queens
- LeetCode 51 N-Queens II
- [leetcode-51]N-Queens(java)
- LeetCode(51) N-Queens
- LeetCode 51 - N-Queens II
- LeetCode-51&52.N-Queens
- DAY22:leetcode #51 N-Queens
- LeetCode No.51 N-Queens
- Android 将assets中的文件拷贝到本地SD卡使用
- mysql插入数据,获取最新插入的ID(自增列)
- oc去除空格方法和判断空格方法
- python快速入门
- UVa 11997 K Smallest Sums 优先队列&&打有序表&&归并
- LeetCode 51 - N-Queens
- spring mvc教程
- HDU 3068 最长回文(求最长回文子串)
- Apache Commons Mail 初步
- hdu 1232 畅通工程(基础模板)
- handler机制详解
- Android中的HandlerThread和IntentService
- 获取COM串口数量-VC编程
- launcher/notification icon的尺寸标准