比赛 |
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;
}