LeetCode 52 [N-Queens II]
1192 ワード
原題
nクイーンズの問題に基づいて、具体的な配置レイアウトではなく、nクイーンズの異なる解決策の数を返します.
例としてn=4のように2つのソリューションが存在する
問題を解く構想.はN-Queensよりも簡単です.boardを描く必要はありません.グローバル変数result を維持するだけです.完全な構想はN-Queens を参照
完全なコード
nクイーンズの問題に基づいて、具体的な配置レイアウトではなく、nクイーンズの異なる解決策の数を返します.
例としてn=4のように2つのソリューションが存在する
問題を解く構想.
完全なコード
class Solution(object):
result = 0
def totalNQueens(self, n):
"""
:type n: int
:rtype: int
"""
cols = []
self.search(n, cols)
return self.result
def search(self, n, cols):
if len(cols) == n:
self.result += 1
return
for col in range(n):
if not self.isValid(cols, col):
continue
self.search(n, cols + [col])
def isValid(self, cols, col):
currentRowNumber = len(cols)
for i in range(currentRowNumber):
# same column
if cols[i] == col:
return False
# left-top to right-bottom
if i - cols[i] == currentRowNumber - col:
return False
# right-top to left-bottom
if i + cols[i] == currentRowNumber + col:
return False
return True