好久没做过算法题了,那本《算法导论》都堆了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)
}
}
本文通过Scala语言实现了解八皇后问题,并提供了详细的解决方案。利用递归算法,找到了所有可能的放置皇后的方案。
518

被折叠的 条评论
为什么被折叠?



