记录编号 580736 评测结果 AAAAAAAAAA
题目名称 [USACO 1.5.4] 跳棋的挑战 最终得分 100
用户昵称 Gravatar宇战 是否通过 通过
代码语言 C++ 运行时间 1.252 s
提交时间 2023-07-26 10:43:34 内存使用 2.31 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m,s,o,a[10000],b[1000];
void dfs(int now,int RL,int LR,int st){
    if(st>n){
        s++;
        if(o<3){
           for(int i=1;i<st;i++){
            cout<<b[i]<<' ';
        } 
        cout<<endl;
        o++;
        }
        return;
    }
    int lim=(now|RL|LR)^((1<<n)-1);
    lim=lim&((1<<n)-1);
    for(int i=lim;i;i&=(i-1)){
        int t=i&(-i);
        b[st]=a[t];
        dfs(now|t,(RL|t)<<1,(LR|t)>>1,st+1);
        
    }
} 
int main(){
    freopen("checker.in","r",stdin);
    freopen("checker.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n;i++){
        int x=pow(2,i-1);
        a[x]=i;
    }
    dfs(0,0,0,1);
    cout<<s;
      
      
      
    return 0;
}