n queens
2015-09-25 20:42
621 查看
n皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击。
给定一个整数n,返回所有不同的n皇后问题的解决方案。
每个解决方案包含一个明确的n皇后放置布局,其中“Q”和“.”分别表示一个女王和一个空位置。
您在真实的面试中是否遇到过这个题?
Yes
样例
对于4皇后问题存在两种解决的方案:
[
[".Q..", // Solution 1
"...Q",
"Q...",
"..Q."],
["..Q.", // Solution 2
"Q...",
"...Q",
".Q.."]
]
给定一个整数n,返回所有不同的n皇后问题的解决方案。
每个解决方案包含一个明确的n皇后放置布局,其中“Q”和“.”分别表示一个女王和一个空位置。
您在真实的面试中是否遇到过这个题?
Yes
样例
对于4皇后问题存在两种解决的方案:
[
[".Q..", // Solution 1
"...Q",
"Q...",
"..Q."],
["..Q.", // Solution 2
"Q...",
"...Q",
".Q.."]
]
class Solution { public: /** * Get all distinct N-Queen solutions * @param n: The number of queens * @return: All distinct solutions * For example, A string '...Q' shows a queen on forth position */ bool isok(vector<int>col,int c,int r){ for(int i=0;i<r;i++){ if(col[i]==c||abs(col[i]-c)==abs(i-r)) return false; } return true; } vector<vector<string> > solveNQueens(int n) { // write your code here vector<vector<string> > res; vector<int> col(n); int r=0; while(1){ if(r==n){ vector<string> t(n,string(n,'.')); for(int i=0;i<n;i++){ t[i][col[i]]='Q'; } res.push_back(t); r--; col[r]++; } else if(col[r]==n){ col[r]=0; r--; if(r==-1) return res; col[r]++; } else if(!isok(col,col[r],r)){ col[r]++; } else{ r++; } } return res; } };
相关文章推荐
- POJ 1679 The Unique MST (次小生成树)
- WAJUEJI which home strong! 1100 (广搜)
- quick-union【连通图】
- quick-find【连通图】
- GUI
- 【UIKit-125-2】#import <UIKit/UIViewController.h>
- Uncaught SyntaxError: Failed to execute 'querySelectorAll' on 'Element': '#00' is not a valid select
- 项目:片刻 DAY1 搭建框架结构
- UITableView默认选中第一个cell
- OC基础-NSValue类簇-将复杂数据类型保存为对象
- 【UIKit-125-1】#import <UIKit/UIViewController.h>
- HDOJ 题目3415 Max Sum of Max-K-sub-sequence(单调队列求区间和最大值)
- iOS:下拉刷新控件UIRefreshControl的详解
- 初识duilib
- UITableViewStylePlain与UITableViewStyleGroup样式的对比
- hdoj 3397 Sequence operation 【线段树区间覆盖 + 异或 + 合并】【维护延迟标记的顺序】
- UITableView的registerClass forCellReuseIdentifier用法详解
- 多控制器
- iOS9 新增 UIStackView 官方文档翻译
- 史上最简单的自定义UITabelView编辑状态的删除按钮