八皇后问题是经典的问题,有很多的算法,用Haskell来解决,很有意思,值得仔细研究。这些算法都来自于互联网。
解法1:
safe :: Int -> [Int] -> Int -> Bool
safe _ [] _ = True
safe x (x1:xs) n =
x /= x1 && x /= x1 + n && x /= x1 - n && safe x xs (n+1)
queens :: Int -> [[Int]]
queens 0 = [[]]
queens n = [ x:y | y <- queens (n-1), x <- [1..8], safe x y 1]
解法2,
import Control.Monad
import Data.List
-- given n, "queens n" solves the n-queens problem, returning a