对于N皇后问题首先的代码
#include <stdio.h>
int IsLegal[3][25];
int cnt = 0;
int cmd;
void Dfs(int n)
{
if (n == cmd + 1)
cnt++;
else {
for(int i = 1; i <= cmd; i++) {
if(IsLegal[0][i] == 0 && IsLegal[1][n+i] == 0 && IsLegal[2][n-i+8] == 0) {
IsLegal[0][i] = IsLegal[1][n+i] = IsLegal[2][n-i+8] = 1;
Dfs(n+1);
IsLegal[0][i] = IsLegal[1][n+i] = IsLegal[2][n-i+8] = 0;
}
}
}
}
int main()
{
while (scanf("%d", &cmd) == 1 && cmd) {
Dfs(1);
printf("%d\n", cnt);
cnt = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 25; j++) {
IsLegal[i][j] = 0;
}
}
}
return 0;
}
int main()
{
int num[11];
for(n = 1; n <= 10; n++)
{
ans = 0;
dfs(1);
num[n] = ans;
}
while(scanf("%d",&n) != EOF && n) {
printf("%d\n",num[n]);
}
return 0;
}