不知道你有没有下过国际象棋,国际象棋中有一种名为皇后的棋子,它的走法就是以它为中心,然后成一个星状放射出来,也就是以它为中心,然后横竖和两条斜杆。
八皇后问题就是在棋面上摆放八颗皇后棋子,然后让它们的走法不要冲突,也就是每一颗棋子的走法路径都独立。那么,这个摆放棋子的问题就成了一个算法问题。
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种计算机语言可以解决此问题。我们来看一下如何用Python来解决这个问题:
def queen(A, cur=0):
if cur == len(A):
print(A)
return 0
for col in range(len(A)):
A[cur], flag = col, True
for row in range(cur):
if A[row] == col or abs(col - A[row]) == cur - row:
flag = False
break
if flag:
queen(A, cur+1)
queen([None]*8)
这个是用python解决八皇后问题的一种方法,不知道你能不能看得懂,看不懂也无所谓,毕竟现在只是拓展一下知识面而已。
好的,今天的内容就讲到这里啦~
(文章图片和部分内容若有侵权,请联系作者删除)