【leetCode刷题日记】 51. N-Queens
来源:互联网 发布:java能调用api 编辑:程序博客网 时间:2024/05/17 02:43
class Solution {private: vector<vector<string>> res; vector<bool> col,dia1,dia2; void putQueen(int n,int index,vector<int>& row){ if(index == n){ //将row中的信息转化为string并压入res res.push_back(rowToString(n,row)); return; } //尝试将第index行的皇后摆放在i列的位置 for(int i=0;i<n;i++){ //剪枝,竖向和斜向都不能有其它皇后 if(!col[i] && !dia1[index-i+n-1] && !dia2[index+i]){ row.push_back(i); col[i] = true; dia1[index-i+n-1] = true; dia2[index+i] = true; putQueen(n,index+1,row); col[i] = false; dia1[index-i+n-1] = false; dia2[index+i] = false; row.pop_back(); } } return; } vector<string> rowToString(int n,vector<int>& row){ vector<string> board(n,string(n,'.')); for(int i=0;i<n;i++){ board[i][row[i]] = 'Q'; } return board; }public: vector<vector<string>> solveNQueens(int n) { res.clear(); col = vector<bool>(n,false); dia1 = vector<bool>(2*n-1,false);//左对角线 dia2 = vector<bool>(2*n-1,false);//右对角线 vector<int> row; putQueen(n,0,row); return res; }};
阅读全文
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
- LeetCode 51. N-Queens
- leetcode.51. N-Queens
- Leetcode 51. N-Queens
- LeetCode 51. N-Queens
- [LeetCode] 51. N-Queens
- leetcode 51. N-Queens
- (2)Spring IoC的第一个例子
- AI转型学习计划
- Android Studio遇到非法字符错误时的解决步骤
- 常用SQL(一)
- SQL语句简单记录,用来记录和后面扩充
- 【leetCode刷题日记】 51. N-Queens
- 常量指针和指针常量
- 容器平台选型:Docker、DC/OS、K8S ?
- 软件测试与质量概述
- 单列模式学习
- ES6箭头函数
- 引入无穷小微积分的合理性
- YII2框架的静态事件绑定
- redis启动出错Creating Server TCP listening socket 127.0.0.1:6379: bind: No error