N-クイーン問題(バックトラック) - Pythonが実装

エイトクイーン問題
質問:チェスボードは8×8の正方形で、各正方形のジェリーは、作品を置きます。女王このような小片は、同じ行またはピース上の同じ列または斜め(左下、右上、右下、左上四方向)を攻撃することができます。あなたは、彼らがお互いを攻撃できないように、8人の王妃を入れたい場合はボード上で(さらに)レイアウトの種類を取得し、(すなわちない異なる対応の任意の異なる列は、任意の2つの間のスラッシュ)。
 
[出典:https://www.cnblogs.com/franknihao/p/9416145.html]詳細および実装に説明
 
1  DEF (ボード、行、列)を確認:
 2      I = 0
 3      ながら、 iは< 行:
 4の         場合、ABS(COL-ボード[I])における(0、ABS(行優先I)):
 5              リターン6          I + = 1つの
 7      リターン
1  DEF EightQueen(ボード、行):
 2      = BLEN LEN(基板)
 3      であれば、行== BLEN:
 4          プリント(基板)
 5          リターン6      COL = 0
 7      一方 COL < BLEN:
 8          もしチェック(ボード、行、列):
 9              ボード[行] = COL
 10              なら EightQueen(ボード、行+ 1 ):
 11                  リターン12          COL + = 1つの
 13      リターン
1  DEF printBoard(ボード):
 2      インポートSYS
 3      用の I、COL 列挙(ボード):
 4          sys.stdout.write(' ' * COL + ' ' + ' ' *(LEN(ボード) - 1 - COL))
 5          プリント()

主な機能の呼び出し:

1枚のボード= [0] * 8 用のにおける範囲(8 )]  
 2  EightQueen(ボード、0)
 3 printBoard(基板)

結果:

1 [0、4、7、5、2、6、1、3 ]
 2  ■□□□□□□□
 3  □□□□■□□□
 4  □□□□□□□■
 5  □□□□ □■□□
 6  □□■□□□□□
 7  □□□□□□■□
 8  □■□□□□□□
 9 □□□■□□□□

 このコードは、唯一の出力結果は、実際にはより多くのN-クイーン問題の解決策があることができます。

おすすめ

転載: www.cnblogs.com/aiyou-3344520/p/11696015.html