八皇后问题
来源:互联网 发布:斗地主残局软件 编辑:程序博客网 时间:2024/06/05 03:07
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
scala解法
def nqueen(n:Int) : Set[List[Int]] ={ def placeQueen(k:Int) :Set[List[Int]] ={ if(k==0){ Set(List()) } else { val k_1queens:Set[List[Int]] = placeQueen(k - 1) for(quees<-k_1queens; candidate <- 1 to n if safe(candidate,quees) ) yield quees:+candidate } } placeQueen(n)}def safe(candidate:Int,queens:List[Int]) ={ (1 to queens.length) zip queens forall { case (row, col) => (queens.length + 1 - row) != Math.abs(col - candidate) && !(col equals (candidate)) }}
def print(queens:List[Int]):Unit={ for(queen<-queens){ println(Array.fill(queens.length)("*") updated(queen-1,"X") mkString("")) } println()}for(queens <- nqueen(4) if !(queens isEmpty)) print(queens)
0 0
- 八皇后 n皇后 问题
- 八皇后N皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题(2)
- 八皇后问题(3)
- 八皇后问题
- 八皇后问题程序
- 浅谈八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题求解
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 基本操作命令(From菜鸟教程)
- 容器
- 文件为图片的格式验证
- android开发之在不加载图片的前提下获得图片的宽高
- reference to 'Size' is ambiguous, candidate found by name lookup is 'Size', 'cv::Size'
- 八皇后问题
- leetcode 412 Fizz Buzz C++
- SQL 笔记
- 关于2的补码(转载)
- VS2010 VS2012无法引用System.Data.OracleClient 解决方案
- OpenGL超级宝典笔记——纹理映射
- Unity 动画 控制....
- workerman-statistics分布式统计监控系统
- C# WPF MemuItem 设置background,icon