/*.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;
}
}

最新文章

  1. VS2010 中,windows服务不能添加 System.Web 引用
  2. centos 清理内存缓存
  3. JS-010-覆盖率测试工具 JSCoverage 初识
  4. win7 64位安装mongodb及管理工具mongoVUE1.6.9.0
  5. C# mongodb [上]
  6. Redis是什么?
  7. bayer图像格式
  8. Android API 文档 离线秒开方法
  9. iOS:使用导航栏
  10. UILabel,UITextField,UIButton三大基础控件总结
  11. 搭建Struts2开发环境
  12. Localdb Attach Problem
  13. Java面向对象知识点
  14. Effective Java 第三版——7. 消除过期的对象引用
  15. Jmeter_ForEach控制器实现网页爬虫
  16. 【一天一道LeetCode】#9. Palindrome Number
  17. WebStorm 2018激活码
  18. 【Spark篇】---SparkSQL on Hive的配置和使用
  19. 一天带你入门到放弃vue.js(三)
  20. websphere 进程

热门文章

  1. WordPress 设计学习
  2. GridView树状结构显示
  3. Markdown Html高级功能 测试用例
  4. [转帖]IBM报告:多国央行考虑发行数字货币 最快5年内问世
  5. Mysql中类似于Oracle中connect by ... start with的查询语句(木大看懂)
  6. Python规范:代码规范要注意
  7. 18.Python略有小成(collections模块,re模块)
  8. 【LEETCODE】52、数组分类,简单级别,题目:717,661,746,628,643,849
  9. SSH协议介绍
  10. Java对象深拷贝浅拷贝总结