记录编号 |
111801 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[USACO 1.5.4] 跳棋的挑战 |
最终得分 |
100 |
用户昵称 |
chs |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
1.503 s |
提交时间 |
2014-07-14 09:24:06 |
内存使用 |
0.31 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=20;
int n,way[maxn],c;
int num=1;
void put(unsigned int s,unsigned int l,unsigned int r)
{
if(num>n){
c++;
if(c<=3){
for(int w=1;w<=n;w++) cout<<way[w]<<" ";
cout<<endl;}
return ;}
unsigned int p;
p=~(s|l|r);
p=p&(1<<n)-1;
while(p){
unsigned int x=p&(-p);
p=p-x;
unsigned int y=x;
for(;;){
way[num]++;
if(y&1) break;
y=y>>1;
}
num++;
put(s+x,(l+x)<<1,(r+x)>>1);
num--;
way[num]=0;
}
}
int main()
{
freopen("checker.in","r",stdin);
freopen("checker.out","w",stdout);
cin>>n;
put(0,0,0);
cout<<c<<endl;
return 0;
}