打表就过,数据很小,没什么说的。递归就好了!
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <string>
#include <algorithm>
#include <fstream>
using namespace std;
/*
const int N = 10;
int pos[N];
int Queen_num;
int cnt;
bool check(int n) {
for(int i = 0; i < n; i++) {
if(pos[i] == pos[n]) return false;
if(abs(pos[n] - pos[i]) == n-i) return false;
}
return true;
}
void solve(int n) {
int i, j;
if(n == Queen_num) {
++cnt;
}
else {
for(i = 0; i < Queen_num; i++) {
pos[n] = i;
if(check(n)) {
solve(n+1);
}
}
}
}
*/
int main() {
/*
while(~scanf("%d", &Queen_num), Queen_num) {
cnt = 0;
solve(0);
printf("%d\n", cnt);
}
*/
int ans[11] = {0, 1, 0, 0, 2, 10, 4, 40, 92, 352, 724};
int Queen_num;
while(~scanf("%d", &Queen_num), Queen_num) {
printf("%d\n", ans[Queen_num]);
}
return 0;
}