N皇后回溯解法 leetcode N-Queens
class Solution {
public:
vector<vector<string> > solveNQueens(int n) {
vector<vector<string>> xxx;
vector<vector<int> > res;
vector<int> com;
int len=n;
c3(res,com,n,len,0);
hua(xxx,res,len);
return xxx;
}
private:
void c3(vector<vector<int> > &res,vector<int> &com,int n,int len,int begin)
{
if(len == 0 && judge(com))
{
res.push_back(com);
return ;
}
for(int i=0;i<n&&len>0;++i)
{
com.push_back(i);
if(judge(com)) //剪枝,没有的话会超时
c3(res,com,n,len-1,i);
com.pop_back();
}
}
bool judge(vector<int> &com)
{
for(int i=0;i<com.size();i++)
{
for(int j=i+1;j<com.size();j++)
{
if(com[i] == com[j] || abs(i-j) == abs(com[i]-com[j]))
return false;
}
}
return true;
}
void hua(vector<vector<string>> &str,vector<vector<int>> &com,int len)
{
for(auto c:com)
{
vector<string> ge;
for(auto d:c)
{
string tem="";
for(int i=0;i<len;++i)
{
if(i==d)
tem +="Q";
else
tem +=".";
}
ge.push_back(tem);
}
str.push_back(ge);
}
}
};
但44ms
N皇后回溯解法 leetcode N-Queens的更多相关文章
- java递归求八皇后问题解法
八皇后问题 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处 ...
- 2n皇后 - 回溯
题目地址:http://www.51cpc.com/web/problem.php?id=1172 Summarize: 1. 递归回溯: 2. 先扫完一种皇后,再扫描另一种: 3. 循环输入: 4. ...
- [Leetcode] n queens ii n皇后问题
Follow up for N-Queens problem. Now, instead outputting board configurations, return the total numbe ...
- 回溯算法 LEETCODE别人的小结 一八皇后问题
回溯算法实际上是一个类似枚举的搜索尝试过程,主要是在搜索尝试中寻找问题的解,当发现已不满足求解条件时,就回溯返回,尝试别的路径. 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目的.但是当探索到某 ...
- js实现八皇后,回溯法
八皇后问题:将八个皇后摆在一张8*8的国际象棋棋盘上,使每个皇后都无法吃掉别的皇后,一共有多少种摆法? 两个皇后不能同时在同一行,同一列,和斜对角线的位置上,使用回溯法解决. 从第一行选个位置开始放棋 ...
- 8皇后-----回溯法C++编程练习
/* * 八皇后问题回溯法编程练习 * 在8×8的棋盘上,放置8个皇后,两个皇后之间不能两两攻击 * 也即,直线,垂直45度.135度方向不能出现两个皇后 * * copyright Michael ...
- 计蒜课--2n皇后、n皇后的解法(一般操作hhh)
给定一个 n*nn∗n 的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入 nn 个黑皇后和 nn个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条斜线(包括正负斜线)上,任意的两个白皇后都 ...
- #C++初学记录(N皇后#回溯递归)
<font size=5 face"微软雅黑">N皇后Problem Description <font size=4 face"微软雅黑"& ...
- 20191030-带返回值的回溯算法Leetcode解数独
题目描述 编写一个程序,通过已填充的空格来解决数独问题. 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔 ...
随机推荐
- java获取页面编码
文章出自:http://babyjoycry.javaeye.com/blog/587527 在此感谢原作者...\(^o^)/~ 最近研究抓取网页内容,发现要获取页面的编码格式,Java没有现成 ...
- PL/SQL
function & procedure packages function --> arguments or parameters with arguments, IN, read o ...
- checkbox的全选、反选、删除(适配器)
package com.example.adapter; import java.util.List; import com.example.ay.R;import com.example.vo.Fl ...
- The authenticity of host 192.168.0.xxx can't be established.
用ssh登录一个机器(换过ip地址),提示输入yes后,屏幕不断出现y,只有按ctrl + c结束 错误是:The authenticity of host 192.168.0.xxx can't b ...
- UIWebView的缓存策略,清除cookie
缓存策略 NSURLRequestCachePolicy NSURLRequestUseProtocolCachePolicy缓存策略定义在 web 协议实现中,用于请求特定的URL.是默认的URL缓 ...
- Shell’s Sort
Solution 1 : (数据结构与算法分析 C++描述 第三版) template<class T> void shellSort(vector<T> &v) { ...
- 使用SSMS 2014将本地数据库迁移到Azure SQL Database
使用SQL Server Management Studio 2014将本地数据库迁移到Azure SQL Database的过程比较简单,在SSMS2014中,有一个任务选项为“将数据库部署到Win ...
- MySQL数据库备份和还原的常用命令小结
备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql 备份MySQL数据库 ...
- 深入分析Php处理浮点数的问题
下文来为各位介绍Php处理浮点数的问题了,如果各位在使用过程中碰到这些问题我们可以一起来看看,希望文章对各位有帮助 公司要对产品价格做调整,因为做的外贸商城,所以价格要和国际接轨.比如国外的价格展示方 ...
- 一秒钟Win7笔记本变无线路由器
开启windows 7的隐藏功能:虚拟WiFi和SoftAP(即虚拟无线AP),就可以让电脑变成无线路由器,实现共享上网,节省网费和路由器购买费.亲测通过,比conncetify方便,稳定,网速好! ...