N皇后问题代码
2024-08-22 02:52:03
/*.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;
}
}
最新文章
- VS2010 中,windows服务不能添加 System.Web 引用
- centos 清理内存缓存
- JS-010-覆盖率测试工具 JSCoverage 初识
- win7 64位安装mongodb及管理工具mongoVUE1.6.9.0
- C# mongodb [上]
- Redis是什么?
- bayer图像格式
- Android API 文档 离线秒开方法
- iOS:使用导航栏
- UILabel,UITextField,UIButton三大基础控件总结
- 搭建Struts2开发环境
- Localdb Attach Problem
- Java面向对象知识点
- Effective Java 第三版——7. 消除过期的对象引用
- Jmeter_ForEach控制器实现网页爬虫
- 【一天一道LeetCode】#9. Palindrome Number
- WebStorm 2018激活码
- 【Spark篇】---SparkSQL on Hive的配置和使用
- 一天带你入门到放弃vue.js(三)
- websphere 进程
热门文章
- WordPress 设计学习
- GridView树状结构显示
- Markdown Html高级功能 测试用例
- [转帖]IBM报告:多国央行考虑发行数字货币 最快5年内问世
- Mysql中类似于Oracle中connect by ... start with的查询语句(木大看懂)
- Python规范:代码规范要注意
- 18.Python略有小成(collections模块,re模块)
- 【LEETCODE】52、数组分类,简单级别,题目:717,661,746,628,643,849
- SSH协议介绍
- Java对象深拷贝浅拷贝总结