N 皇后问题源自国际象棋,所有棋子中权力最大的称为皇后,它可以直着走、横着走、斜着走(沿 45 度角),可以攻击移动途中遇到的任何棋子。N 皇后问题的具体内容是:如何将 N 个皇后摆放在 N*N 的棋盘中,使它们无法相互攻击。
例如,将 4 个皇后摆放在 4*4 的棋盘中,下图给出了一种摆放方式,各个皇后无论是直着走、横着走还是斜着走,都无法相互攻击。
代码如下:
#include <stdio.h>
#define N 20 //皇后的数量
int q[N]; //各行皇后所在的列
int count = 0; //统计N皇后问题解的个数
//输出 N 皇后问题的解决方案
void print(int n)
{
int i, j;
count++;
printf("第%d个解:\n", count);
for (i = 1; i <= n; i++) //行
{
for (j = 1; j <= n; j++) //列
{
if (q[i] != j)
printf("x");
else
printf("Q");
}
printf("\n");
}
printf("\n");
}
/