博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
N-Queens N皇后问题 深搜 关于效率优化(重重)
阅读量:4107 次
发布时间:2019-05-25

本文共 978 字,大约阅读时间需要 3 分钟。

问题:

在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于再n×n的棋盘上放置n个皇后,任何2个皇后不妨在同一行或同一列或同一斜线上。

解答:

深搜。

代码:

class Solution {  public:	  vector
> solveNQueens(int n) { vector
> res; vector
temp; search(0, n, temp, res); return res; } private: void search(int level, int n, vector
&temp, vector
> &res) { if (level == n) { if (find(res.begin(), res.end(), temp) == res.end()) res.push_back(temp); return; } string str (n, '.'); for(int i = 0; i < n; i++) { str[i] = 'Q'; if (judge(i, temp)) { temp.push_back(str); search(level + 1, n, temp, res); temp.pop_back(); } str[i] = '.'; } } bool judge(int pos, vector
&temp) { for (int i = 0; i < temp.size(); i++) { if (temp[i][pos] == 'Q') { return false; } for (int j = 0; j < temp[i].length(); j++) { if (temp[i][j] == 'Q') { if (abs(int(temp.size()) - i) == abs(j - pos)) return false; } } } return true; } };
关于效率优化:

待续

转载地址:http://aytsi.baihongyu.com/

你可能感兴趣的文章
String s1 = new String("abc"); String s2 = ("abc");
查看>>
JAVA数据类型
查看>>
Xshell 4 入门
查看>>
SoapUI-入门
查看>>
Oracle -常用命令
查看>>
JAVA技术简称
查看>>
ORACLE模糊查询优化浅谈
查看>>
2016——个人年度总结
查看>>
2017——新的开始,加油!
查看>>
【Python】学习笔记——-6.2、使用第三方模块
查看>>
【Python】学习笔记——-7.0、面向对象编程
查看>>
【Python】学习笔记——-7.1、类和实例
查看>>
【Python】学习笔记——-7.2、访问限制
查看>>
【Python】学习笔记——-7.3、继承和多态
查看>>
【Python】学习笔记——-7.4、获取对象信息
查看>>
【Python】学习笔记——-7.5、实例属性和类属性
查看>>
Linux设备模型(总线、设备、驱动程序和类)之四:class_register
查看>>
git中文安装教程
查看>>
虚拟机 CentOS7/RedHat7/OracleLinux7 配置静态IP地址 Ping 物理机和互联网
查看>>
弱类型、强类型、动态类型、静态类型语言的区别是什么?
查看>>