记录编号 |
598551 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[USACO 1.5.4] 跳棋的挑战 |
最终得分 |
100 |
用户昵称 |
TeaWine |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.808 s |
提交时间 |
2025-01-25 16:22:23 |
内存使用 |
3.33 MiB |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,num,row[10086],col_n[10086];
int ans,up;
void out (){
for(int i = 1; i<=n; i++){
cout<<row[i]<<" ";
}
cout<<"\n";
}
void core (int i,int s,int ll,int rl) {
if(i>n){
ans++;
if(ans<=3)out();
return ;
}
int p=s|ll|rl;
for(int k=up&(~p);k;){
int fs=k&-k;
row[i]=col_n[fs];
core(i+1,s|fs,(ll|fs)<<1,(rl|fs)>>1);
k=k^fs;
}
}
int main () {
freopen("checker.in","r",stdin);
freopen("checker.out","w",stdout);
cin>>n;
up=(1<<n)-1;
for(int i = 1; i<=n; i++)col_n[1<<(i-1)]=i;
core(1,0,0,0);
cout<<ans;
return 0;
}