记录编号 598551 评测结果 AAAAAAAAAA
题目名称 [USACO 1.5.4] 跳棋的挑战 最终得分 100
用户昵称 GravatarTeaWine 是否通过 通过
代码语言 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;
}