八皇后问题C++泛型算法实现
来源:互联网 发布:武威免费制作seo 编辑:程序博客网 时间:2024/06/18 16:59
八皇后问题:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
八皇后问题本质上是排列问题。
具体分析[来自<剑指Offer>]:
“由于8个皇后的任意两个不能处在同一行,那么肯定是每一个皇后占据一行。于是定义一个数组ColumnIndex[8],数组中第i个数字表示位于第i行的皇后的列号。先把数组ColumnIndex的8个数字分别用0~7初始化,接下来就是对数组ColumnIndex做全排列。然后只需要分析每个排列对应的8个皇后是不是在同一对角线上,即是不是有i-j == ColumnIndex[i] - ColumnIndex[j]或j-i == ColumnIndex[i] - ColumnIndex[j]成立。”
而C++标准库算法bool next_permutation( BidirIt first, BidirIt last) 正好提供了对[first, last)元素的排序。该函数实现就地排列,如果还有下个排列,则将原序列改为下个排列,并返回true,表示排列成功。
利用标准库的算法,省去了许多的代码。
0 0
- 八皇后问题C++泛型算法实现
- 八皇后问题-C实现
- C#WPF实现回溯算法解决八皇后问题
- 八皇后问题的算法实现
- 八皇后问题递归回溯算法实现
- 算法复习 - 八皇后问题(Java实现)
- java实现八皇后问题算法
- 八皇后问题递归实现(C++)
- 八皇后问题的C语言实现
- C语言实现“八皇后问题”
- 八皇后问题[算法]
- 八皇后问题算法
- 算法问题-八皇后
- 算法--八皇后问题
- 算法-八皇后问题
- 算法八皇后问题
- 算法--八皇后问题
- 八皇后问题(C++)
- js 使用for循环遍历数组
- 图片操作相关代码
- 运算符优先级
- Java程序员面试中的多线程问题
- 详解Linux内核红黑树算法的实现
- 八皇后问题C++泛型算法实现
- IP头、TCP头、UDP头详解以及定义
- android流媒体框架介绍
- PHP Base
- virtualbox 安装 虚拟系统
- JDK5.0中JVM堆模型、GC垃圾收集详细解析 .
- 巧用数据库SQL语句的“连接查询”功能
- Python执行cmd命令
- Java线程面试题Top50