[leetcode] N-Queens
来源:互联网 发布:模拟汽车软件 国外 编辑:程序博客网 时间:2024/06/06 02:35
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.."]]思路:深度搜索,属于经典问题了,定义两个数组,行数组和列数组,行数组用来存储该行摆放位置,列数组用来存储该列是否已经摆放过了,本代码参考了大神的代码
代码:
class Solution { int row[1000],col[1000]; vector<vector<string> > res;public: vector<vector<string> > solveNQueens(int n) { res.clear(); dfs(0,n); return res; } void dfs(int step, int n){ int i,j; if(step==n){ vector<string> rows; for(i=0;i<n;i++){ string temp(n,'.'); temp[row[i]]='Q'; rows.push_back(temp); } res.push_back(rows); } for(i=0;i<n;i++){ if(col[i]==0){ for(j=0;j<step;j++){ if(abs(j-step)==abs(i-row[j])) break;//列之间的距离与行之间的距离相等; } if(j==step){ row[step]=i; col[i]=1; dfs(step+1,n); row[step]=0; col[i]=0; } } } }};
0 0
- 【LeetCode】N-Queens && N-Queens II
- leetcode N-Queens & N-Queens II
- Leetcode: N-Queens && N-Queens II
- 【Leetcode】【python】N-Queens/N-Queens II
- LeetCode: N-Queens II
- LeetCode: N-Queens
- LeetCode : N-Queens
- LeetCode : N-Queens II
- [Leetcode] N-Queens II
- leetcode 72: N-Queens
- LeetCode 38: N-Queens
- 【leetcode】N-Queens II
- 【leetcode】N-Queens
- LeetCode: N Queens II
- [LeetCode]N-Queens
- [LeetCode]N-Queens II
- [leetcode]N-Queens
- [LeetCode] Anagrams、N-Queens
- Python学习14:面向对象编程(三)
- [模式识别].(希腊)西奥多里蒂斯<第四版>笔记7之__feature generation (2)
- GCC __attribute__ 详解
- struts2使用token做重复提交处理
- Behavior Designer中节点类型分析
- [leetcode] N-Queens
- 科目组的主要作用【OBD4】
- HDU 4857 (反向拓扑排序 + 优先队列)
- 修改Google Chrome浏览器背景颜色的方法
- Twitter,Facebook和社交媒体 - 对非结构化数据分析
- hdu 1864最大报销额 (01背包模板)
- HDU 4864 Task
- 关于会计科目表,科目组,字段状态组
- Spring 注解学习(三) 表单页面处理