在N×N的棋盘上摆放N个皇后,使其不能互相攻击,即任意的两个皇后不能处在同一行,同一列,或同一斜线上。请输出对于N有多少种摆放。
区块链毕设网qklbishe.com为您提供问题的解答
在N×N的棋盘上摆放N个皇后,使其不能互相攻击,即任意的两个皇后不能处在同一行,同一列,或同一斜线上。请输出对于N有多少种摆放。
标题是"用栈解决8皇后问题",我这里没有用到栈。
import sys # ans= # [1,1,0,0,2,10,4,40,92,352,724,2680,14200,73712,365596,2279184, # 14772512,95815104,666090624,4968057848,39029188884,314666222712, # 2691008701644,24233937684440,227514171973736,2207893435808352,22317699616364044,234907967154122528] m=int(input()) # print(f"Total count: {ans[m]}") # https://oeis.org/A000170 # 对于在 n × n 板上放置 n 个皇后的确切解数,即 n × n 皇后图中大小为 n 的独立集合的数量,没有已知的公式。 27×27棋盘是已完全枚举的最高阶棋盘。 [5] 下表给出了 n 皇后问题的解数,包括基本解(OEIS 中的序列 A002562 )和全部解(OEIS 中的序列 A000170 ) ),对于所有已知的情况。 def queens(n, i, a, b, c): if i < n: for j in range(n): if j not in a and i+j not in b and i-j not in c: yield from queens(n, i+1, a+[j], b+[i+j], c+[i-j]) else: yield a print(f'Total count: {len(list(queens(m, 0, [], [], [])))}')
03:04
以上就是关于问题在N×N的棋盘上摆放N个皇后,使其不能互相攻击,即任意的两个皇后不能处在同一行,同一列,或同一斜线上。请输出对于N有多少种摆放。的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训