LeetCode:N-Queens
来源:互联网 发布:大数据基金有哪些 编辑:程序博客网 时间:2024/06/10 22:16
N-Queens
Total Accepted: 55554 Total Submissions: 212496 Difficulty: Hard
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.."]]
Subscribe to see which companies asked this question
Hide Similar Problems
思路:
将N-Queens II中的解做一个转化即可。
c++ code:
class Solution {public: vector<vector<string>> solveNQueens(int n) { vector<vector<string>> res; vector<int> nums(n); for(int i=0;i<n;i++) nums[i]=i; permute(res, nums,0); return res; } // 自定义函数 void permute(vector<vector<string>> &res, vector<int> &nums, int pos) { int n = nums.size(); if(pos==n) { if(check(nums)) { vector<string> ans; for(int i=0;i<n;i++) { string str(n, '.'); str[nums[i]] = 'Q'; ans.push_back(str); } res.push_back(ans); } return; } for(int i=pos;i<n;i++) { swap(nums[pos], nums[i]); permute(res, nums, pos+1); swap(nums[i], nums[pos]); } } bool check(vector<int> &nums) { int n = nums.size(); for(int i = 0;i < n;i++) { for(int j = i + 1;j < n;j++) // 判断是否在主、副对角线上 if(i-j == nums[i]-nums[j] || j-i == nums[i]-nums[j]) return false; } return true; } };
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
- UC/OS II时间片轮转法调度修改
- poj-3320-Jessica's Reading Problem
- ios开发网址总结
- Tomcat设置默认启动项目及Java Web工程设置默认启动页面
- Hibernate的N+1查询及解决
- LeetCode:N-Queens
- HDU3068 最长回文 manacher模板
- 更新组合值
- MSQL存储过程
- poj1088滑雪--dp之记忆化搜索
- 框架 day49 BOS项目练习3(修复window控件BUG,添加/修改/作废取派员,datagrid使用,分页查询(DetachedCriteria离线),formatter函数)
- Android "Unable to instantiate fragment"解决方案
- 面试题5: 链表的相关操作
- Android 数据绑定框架DataBinding