标签:Python res self dfs II colj rowk check Queens
只用统计总组合数,设置p数组,p[i]表示第i行的棋子放在哪个列上,check函数检查,当前行之前的行,是否有已经选择了该列,或者与该列成为对角线。
设置dfs,当走到第n行了,说明找到了一个组合,res += 1.如果不行,则遍历全部列,给当前的第k行,并check,如果可以,则此行找到了,记录到p数组中,并继续dfs找第k+1行该在哪一列。
class Solution:
def totalNQueens(self, n: int) -> int:
p = [-1]*n
self.res = 0
def check(rowk, colj, p):
for prev_row in range(rowk):
if p[prev_row] == colj or abs(p[prev_row] - colj) == abs(prev_row - rowk):
return 0
return 1
def dfs(n, rowk):
if rowk == n:
self.res += 1
else:
for colj in range(n):
if check(rowk, colj, p):
p[rowk] = colj
dfs(n, rowk+1)
dfs(n, 0)
return self.res
2021,遇到了贵人,感谢唐老师,感谢岳老师。感恩上帝。希望2022年可以回到最想去的地方吧。。Amen
标签:Python,res,self,dfs,II,colj,rowk,check,Queens 来源: https://blog.csdn.net/sinat_30403031/article/details/122263807
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。