python实现八皇后

额,暑假想学学python,所以就边学边练习,就着《算法导论》一块了,这是大二时算法的一道考试题,以前没意识到算法的重要性,现在才开始恶补,鄙视一下自己。实现很简单,就是用了个递归,代码如下,留作备份:

 

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys

QueenSize = 8
count = 0
site = [0 for a in range(QueenSize)]
board = [[0 for a in range(QueenSize)] for b in range(QueenSize)]

def Queen(n):
    if n == QueenSize:
        OutPut()
        return
    else:
        for i in range(0, QueenSize, 1):
            site[n] = i
            if IsValid(n):
                Queen(n + 1)

def IsValid(n):
    for i in range(0, n, 1):
        if site[i] == site[n]:
            return False
        if abs(site[i] - site[n]) == (n - i):
            return False

    return True

def OutPut():
    j = 0
    global count
    count = count + 1
    print "第%d种输出为:" %count
    for i in range(0, QueenSize, 1):
        board[j][site[i]] = 1
        j = j + 1
    for i in range(0, QueenSize, 1):
        for j in range(0, QueenSize, 1):
            print "%d " %board[i][j],
        print
    for i in range(0, QueenSize, 1):
        for j in range(0, QueenSize, 1):
            board[i][j] = 0
            
Queen(0)