六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 109|回复: 0

八皇后问题的Scala解法

[复制链接]

升级  29.33%

24

主题

24

主题

24

主题

秀才

Rank: 2

积分
94
 楼主| 发表于 2013-2-5 01:19:11 | 显示全部楼层 |阅读模式
好久没做过算法题了,那本《算法导论》都堆了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)    }}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表