首页 > 试题广场 >

八皇后问题

[编程题]八皇后问题
  • 热度指数:219 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
八皇后问题,是一个古老而著名的问题。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。利用回溯算法我们能很快的得到共有92种互不相同的解(独立解有12种)。当棋盘变成n行,n列,且皇后也有n个的时候(n<=20),问有多少种不同的解?

输入描述:
一行,一个正整数n(1<=n<=20)


输出描述:
输出一个整数,代表解的个数。
示例1

输入

8

输出

92
示例2

输入

20

输出

39029188884

备注:
一般的回溯算法只能通过n<=13左右,以下给出n=14到20的答案。

对于想挑战原规模的选手请忽略以下答案。

365596, 2279184, 14772512, 95815104, 666090624, 4968057848, 39029188884