比赛 20160708BDFS 评测结果 C
题目名称 跳棋的挑战 最终得分 0
用户昵称 5458 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2016-07-08 09:48:57
显示代码纯文本
#include <iostream>
#include <cstdio>
using namespace std;
const int maxn=16;
int n,ans=0;
int c[maxn];
bool f[maxn][maxn];
void dfs(int x){
	if(x==n){
	ans++;
		if(ans<=3){
			for(int i=0;i<n;i++)
				cout<<c[i]<<' ';
				cout<<endl;
		}
	}
	else 
		for(int i=0;i<n;i++){
		if(!f[0][i]&&!f[1][x+i]&&!f[2][x-i+n]){
			c[x]=i+1;
			f[0][i]=f[1][x+i]=f[2][x-i+n]=true;
			dfs(x+1);
			f[0][i]=f[1][x+i]=f[2][x-i+n]=false;
		}
	}
}
int main(){
	freopen("checker.in","r",stdin);
	freopen("checker.out","w",stdout);
	memset(f,0,sizeof(f));
	cin>>n;
	dfs(0);
	cout<<ans;
	return 0;
}