学习python3第一天,用八皇后练练手。

#!/usr/bin/python3
# -*- coding:gbk -*-

class EightQueens:
    vn_sum = 0
    #检查皇后的位置是否符合要求
    def check_queens( self, pos ):
        for i in range(0, len(pos) - 1 ):
            for j in range( i + 1, len(pos) ):
                if( abs( i - j ) == abs( pos[i] - pos[j] ) ):
                    return False
        return True

    #递归调用,生成8个皇后的位置。
    def queens( self, num, pos ):
        if( num == 8 ):
            self.show(pos)
        else:
            for i in range(1,9):
                if( i not in pos ):
                    pos.append(i)
                    if( self.check_queens( pos ) ):
                        self.queens( num + 1, pos )
                    pos.pop()

    #显示结果
    def show( self, pos):
        self.vn_sum = self.vn_sum + 1
        for i in range( 0, 8 ):
            print( ". " * ( pos[i] - 1 ) + "X " + ". " * ( 8 - pos[ i ] + 1 ) )
        print( " " )
    
pos = []
eq = EightQueens()
eq.queens( 0, pos )
print( '共 {} 种走法'.format( eq.vn_sum ) )

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值