记录编号 |
366746 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[USACO 1.5.4] 跳棋的挑战 |
最终得分 |
100 |
用户昵称 |
农场主 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
1.841 s |
提交时间 |
2017-01-25 20:16:44 |
内存使用 |
0.29 MiB |
显示代码纯文本
#include<cstdio>
#include<algorithm>
#include<cstring>
#define maxn 20
using namespace std;
int n;
int s[maxn]={0};
int cnt=0,ans=0;
void dfs(int i,int x1,int x2,int l){
if (i>n){
ans++;
if (cnt<3){
cnt++;
for (int j=1;j<=n;j++){
printf("%d ",s[j]);
}
printf("\n");
}
return;
}
int k=1;
for (int j=1;j<=n;j++){
k<<=1;
if ( (k&x1)|(k&x2)|(k&l) ) ;
else{
s[i]=j;
dfs(i+1,(k|x1)>>1,(k|x2)<<1,k|l);
}
}
return;
}
int main(){
freopen("checker.in","r",stdin);
freopen("checker.out","w",stdout);
scanf("%d",&n);
dfs(1,0,0,0);
printf("%d\n",ans);
}