Eastsun 发表于 2013-2-5 01:19:11

八皇后问题的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]
查看完整版本: 八皇后问题的Scala解法