写了一个八皇后解法

先用最笨的穷举法求解,有空再研究更好的解法:

#
 -*- coding: gb2312 -*-



size 

=
 
8
      
#
 棋盘大小


EMPTY 
=
 

O

   
#
 空位


QUEEN 
=
 

X

   
#
 皇后




#
 查看棋盘的信息


def
 show_board(cols):
    

for
 i 
in
 range(
1
, size 
+
 
1
):
        

for
 j 
in
 range(
1
, size 
+
 
1
):
            

if
 j 
==
 cols[i]:
                

print
 QUEEN,
            

else
:
                

print
 EMPTY,
        

print
 

/n

,


#
 检测棋盘上皇后摆法是否合法

#

 return:

#

        True(不冲突), False(有冲突)


def
 check_board(cols):
    

for
 i 
in
 range(
1
, size):
        

for
 j 
in
 range(i 
+
 
1
, size 
+
 
1
):
            

if
 (j 

 i) 
==
 abs(cols[j] 

 cols[i]):
                

return
 False
    

return
 True

solve_count 
=
 0


for
 a 
in
 range(
1
, size 
+
 
1
):
    

for
 b 
in
 range(
1
, size 
+
 
1
):
        

for
 c 
in
 range(
1
, size 
+
 
1
):
            

for
 d 
in
 range(
1
, size 
+
 
1
):
                

for
 e 
in
 range(
1
, size 
+
 
1
):
                    

for
 f 
in
 range(
1
, size 
+
 
1
):
                        

for
 g 
in
 range(
1
, size 
+
 
1
):
                            

for
 h 
in
 range(
1
, size 
+
 
1
):
                                

if
 a 
<>
 b 
and
 a 
<>
 c 
and
 a 
<>
 d 
and
 a 
<>
 e 
and
 a 
<>
 f 
and
 a 
<>
 g 
and
 a 
<>
 h 
and
 b 
<>
 c 
and
 b 
<>
 d 
and
 b 
<>
 e 
and
 b 
<>
 f 
and
 b 
<>
 g 
and
 b 
<>
 h 
and
 c 
<>
 d 
and
 c 
<>
 e 
and
 c 
<>
 f 
and
 c 
<>
 g 
and
 c 
<>
 h 
and
 d 
<>
 e 
and
 d 
<>
 f 
and
 d 
<>
 g 
and
 d 
<>
 h 
and
 e 
<>
 f 
and
 e 
<>
 g 
and
 e 
<>
 h 
and
 f 
<>
 g 
and
 f 
<>
 h 
and
 g 
<>
 h:
                                    cols 

=
 [0,a,b,c,d,e,f,g,h]
                                    

if
 check_board(cols):
                                        solve_count 

+=
 
1

                                        show_board(cols)
                                        

print
 

/n

,


print
 

found %i solves.

 
%
 solve_count

    原文作者:八皇后问题
    原文地址: https://blog.csdn.net/inelm/article/details/4613065
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞