八皇后问题的Scala解法 博客分类: 函数式语言 Scala算法CC++C#
程序员文章站
2024-02-16 21:35:04
...
好久没做过算法题了,那本《算法导论》都堆了N cm的一层灰了-_-
废话不多说了,下面是代码:
废话不多说了,下面是代码:
/** &# Queen.scala 八皇后问题的Scala解法 @author Eastsun @date 2008.5.19 */ object Queen extends Application{ solve() /** 列出八皇后问题的92中解法 */ def solve(){ var count =0 //ls记录了已放皇后的位置(x,y),x表示行,y表示列 def solve(ls:List[(Int,Int)]):Unit = { if( ls.size == 8 ) printAnswer(ls) else{ var s =ls.size for( t <- 0 until 8 ) if(ls.forall(i => { var (x,y) =i !(x==s||y==t||x+y==t+s||s-x==t-y) })) solve((s,t)::ls) } } //打印结果,'o'表示皇后 def printAnswer(an:List[(Int,Int)]){ count += 1 println("\n#Answer "+count) for(r <- 0 until 8 ){ for(c <- 0 until 8 ) print(if(an(7-r)._2==c) 'o' else 'x') println() } } solve(Nil) } }