八皇后问题的Scala解法
好久没做过算法题了,那本《算法导论》都堆了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) }}
页:
[1]