N皇后问题代码
/*.h*/
#ifndef _NQUEEN_H
#define _NQUEEN_H
#include<iostream>
#include<vector>
#include<string>
using namespace std; class Queen{
public:
Queen();
Queen(int num);
//~Queen();
void show(const vector<vector<string>>&input);
void solve();
private:
bool is_valid(const int row, const int col);
//void init(const int num);
void TraceBack(const int curRow);
private:
int m_num;
vector<int>pos;
vector<vector<string>>res;
}; #endif
/*cpp*/
#include"NQueen.h" Queen::Queen(int num) :m_num(num), pos(, -){ }
void Queen::TraceBack(int curRow){
//cout << m_num << endl;
if (curRow == m_num)
{
vector<string>out(m_num, string(m_num, '*'));
for (int i = ; i < m_num; i++){
out[i][pos[i]] = 'Q';
}
res.push_back(out);
}
else{
for (int col = ; col < m_num; col++){
if (is_valid(curRow, col)){
pos[curRow] = col;
TraceBack(curRow + );
pos[curRow] = -;
}
}
}
}
bool Queen::is_valid(int row, int col){
for (int i = ; i < row; i++){
if (pos[i] == col || abs(i - row) == abs(pos[i] - col))
return false;
}
return true;
}
void Queen::solve(){
TraceBack();
//cout << res.size() << endl;
show(res);
}
void Queen::show(const vector<vector<string>>&input){
//cout << input.size() << endl;
//cout << input[0].size() << endl;
for (int i = ; i < input.size(); i++){
for (int j = ; j < input[].size(); j++){
cout << input[i][j] << endl;
//if ((j + 1) % input.size() == 0)cout << input[i][j]<<e
}
cout << endl;
}
}
N皇后问题代码的更多相关文章
- 对八皇后的补充以及自己解决2n皇后问题代码
有了上次的八皇后的基础.这次准备解决2n皇后的问题,: //问题描述// 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行./ ...
- 八皇后--python代码
迭代和递归方法的运用 import random def prettyprint(solution): #图形化处理数据 def line(pos,length=len(solution)): #单行 ...
- C#中八皇后问题的递归解法——N皇后
百度测试部2015年10月份的面试题之——八皇后. 八皇后问题的介绍在此.以下是用递归思想实现八皇后-N皇后. 代码如下: using System;using System.Collections. ...
- [CODEVS1295]N皇后(位运算+搜索)
题目描述 Description 在n×n格的棋盘上放置彼此不受攻击的n个皇后.按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子.n后问题等价于再n×n的棋盘上放置n个皇后,任 ...
- 算法回顾--N皇后问题简单回顾
前言 最近学习的过程中,不知道哪门子的思维发散,突然又遇见皇后问题了,于是乎老调重弹,心里琢磨,虽然思路大家都容易懂,哪怕是最简单的野蛮回溯法,说着简单,但是如果非得编码实现?我可以一次性写出来OK的 ...
- [题解]N 皇后问题总结
N 皇后问题(queen.cpp) [题目描述] 在 N*N 的棋盘上放置 N 个皇后(n<=10)而彼此不受攻击(即在棋盘的任一行,任一列和任一对角线上不能放置 2 个皇后) ,编程求解所有的 ...
- Python 八皇后问题
八皇后问题描述:在一个8✖️8的棋盘上,任意摆放8个棋子,要求任意两个棋子不能在同一行,同一列,同一斜线上,问有多少种解法. 规则分析: 任意两个棋子不能在同一行比较好办,设置一个队列,队列里的每个元 ...
- 【搜索】还是N皇后
先看题才是最重要的: 这道题有点难理解,毕竟Code speaks louder than words,所以先亮代码后说话: #include<iostream> using namesp ...
- 回溯法——求解N皇后问题
问题描写叙述 八皇后问题是十九世纪著名数学家高斯于1850年提出的.问题是:在8*8的棋盘上摆放8个皇后.使其不能互相攻击,即随意的两个皇后不能处在允许行.同一列,或允许斜线上. 能够把八皇后问题拓展 ...
随机推荐
- 【知识总结】动态 DP
勾起了我悲伤的回忆 -- NOIP2018 316pts -- 主要思想:将 DP 过程分解为方便单点修改和一个区间合并的操作(通常类似矩阵乘法),然后用数据结构(通常为线段树)维护. 例:给定一个长 ...
- [转帖]央行推出数字货币DCEP:基于区块链技术、将取代现钞
央行推出数字货币DCEP:基于区块链技术.将取代现钞 天天快报的内容. 密码财经 2019-10-29 18:15 关注 前不久的10月23日,Facebook的首席执行官扎克伯格在美国国会听证会 ...
- day35——生产者消费者模型、线程
day35 进程:生产者消费者模型 编程思想,模型,设计模式,理论等等,都是交给你一种编程的方法,以后你遇到类似的情况,套用即可 生产者消费者模型的三要素 生产者:产生数据的 消费者:接收数据做进一步 ...
- Linux远程管理命令
关机\重启 shutdown 选项 时间 参数 -r 重启 例子: shutdown 1分钟后关机 shutdown now 立刻关机 shutdown –r now 立即重启 shutdown 20 ...
- jQuery框架"风云榜"案例
<title>电影风云榜</title> <style> /*清空默认样式*/ *{padding:0;margin:0;border:0;list-style:n ...
- (转)Nginx+rtmp+ffmpeg搭建流媒体服务器
(1)下载第三方扩展模块nginx-rtmp-module # mkdir module && cd module //创建一个存放模块的目录 # wget https://githu ...
- 在springMVC的controller中获取request,response对象的一个方法
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttr ...
- Gym 102055B Balance of the Force
大意: $n$个骑士, 第$i$个骑士若加入光明阵营, 那么能力值$L_i$, 加入黑暗阵营, 能力值$D_i$. 给定$m$个限制$(u_i,v_i)$, 表示$u_i,v_i$不能在同一阵营. 求 ...
- C# vb .net实现灰度化特效滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的灰度化呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第一步: ...
- kubernetes-安装Helm
Helm是什么? Helm可以管理Kubernetes应用程序-Helm Charts帮助您定义,安装和升级最复杂的Kubernetes应用程序. 下载Helm 在https://github.com ...