比赛 皇后 评测结果 AAAAAAAAAA
题目名称 N皇后问题 最终得分 100
用户昵称 Tabing010102 运行时间 0.009 s
代码语言 C++ 内存使用 0.29 MiB
提交时间 2017-03-17 20:57:18
显示代码纯文本
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 20;
FILE *fin, *fout;
int n, ans=0, d[maxn];
bool test(int row, int col) {
	for(int i = 1; i < row; i++) 
		if(d[i]==col || d[i]-(row-i)==col || d[i]+(row-i)==col)
			return false;
	return true;
}
void dfs(int dep) {
	if(dep >= n+1) { ans++; return; }
	for(int i = 1; i <= n; i++) {
		if(test(dep, i)) {
			d[dep] = i;
			dfs(dep+1);
		}
	}
}
int main() {
	fin = fopen("queen.in", "r");
	fout = fopen("queen.out", "w");
//	fin = stdin; fout = stdout;
	fscanf(fin, "%d", &n);
	memset(d, 0, sizeof(d));
	dfs(1);
	fprintf(fout, "%d\n", ans);
	return 0;
}