好久没做过算法题了,那本《算法导论》都堆了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)
}
}