python 8皇后问题

网友投稿 305 2022-08-26

python 8皇后问题

今天想到了8皇后问题,所以特地来实现了一下,所谓的8皇后,就是在8*8的网格里面放皇后,然后任意两个皇后不能同行,同列或者同斜线。

分析

用一个一维数组表示8皇后,其中索引为行号,值为列号;实现一个conflict函数,判断一维数组里面的值是同列,或者同对角线剩下的就是按照行递归,每一次递归的时候找合适的列填值就行了。终止条件就是填到了n-1行打印输出就行了

代码

def conflict(q,x,y): for i in range(x): if(q[i]==y or abs(i-x)==abs(q[i]-y)): return True return False def n_queen(n,q,row): for i in range(n): if(not conflict(q,row,i)): q[row]=i if(row==n-1): print(q) else: n_queen(n,q,row+1)if __name__ == "__main__": n=8 q=[None for i in range(n)] n_queen(n,q,0)

参考文献

​​N皇后问题的python实现​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:[leetcode] 1328. Break a Palindrome
下一篇:“互联网营销师”的背后,仅仅是一个职业的崛起?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~