您的位置:首页 > 其它

scala 回溯法解决八皇后问题

2016-09-13 12:07 204 查看
object EightQueen extends App{
val queenArray = new Array[Int](8)
var num = 0
def printqueen(){
for(i <- 0.until(8);j <- 0.until(8)){
if(j == queenArray(i)) print('*') else print('-')
if(j == 7) println();
}
}
def cango(x:Int,y:Int):Boolean={
for(i <- 0.until(x)){
if(queenArray(i) == y) return false;
if(i + queenArray(i) == x + y) return false;
if(i - queenArray(i) == x - y) return false;
}
true
}
def queen(x:Int){
for(i <- 0.until(8)){
if(cango(x,i)){
queenArray(x) = i
if(x == 7){
num += 1
println(num)
printqueen()
queenArray(x) = (i + 1) % 8
return
}
queen(x + 1)
}
}
}
queen(0)
}

对比:scala 深搜法解决八皇后问题

参考:回溯法与深度优先遍历的异同
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 scala