[伯俊]9663 N-Queen(Python)
質問する
N-Queen問題の大きさはN× これは,N個のチェス盤上のN個の皇后が互いに攻撃し合うことができない問題である.
Nが与えられた場合,解放後の方法の数を計算するプログラムを作成してください.
入力
1行目はNです.(1 ≤ N < 15)
しゅつりょく
1行目でN個の皇后が互いに攻撃できない場合は、数字を出力します.
に答える
Qeenの各行の位置を図に入れ、その位置にアクセスしたか、対角線であるかを確認します.
コード#コード#
def dfs(depth):
global count
if depth == n:
count += 1
return
for i in range(n):
if visited[i]==0: # 해당 자리에 퀸이 존재하는지 확인
graph[depth] = i # 각 행마다 위치하는 퀸의 자리
t=True
for j in range(depth): # graph의 개수만큼 for문을 돌려야하지만 어차피 depth랑 개수 똑같음
if abs(graph[depth]-graph[j])==abs(depth-j):
t=False
break
if t:
print(graph,depth)
visited[i] = 1
dfs(depth+1)
visited[i] = 0
n = int(input())
graph = [0]*n
visited = [0]*n
count=0
dfs(0)
Reference
この問題について([伯俊]9663 N-Queen(Python)), 我々は、より多くの情報をここで見つけました https://velog.io/@hope1213/백준-9663-N-Queen-파이썬テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol