记录编号 580730 评测结果 AAAAAAAAAA
题目名称 [USACO 1.5.4] 跳棋的挑战 最终得分 100
用户昵称 Gravatar┭┮﹏┭┮ 是否通过 通过
代码语言 C++ 运行时间 2.010 s
提交时间 2023-07-26 10:03:28 内存使用 2.29 MiB
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int n,ans;
int s[17],v[20][20];
//int li,rl,lr; 
void pr(){
    ans++;
    if(ans <= 3){
        for(int i = 1;i <= n;i++){
            printf("%d ",s[i]);
        }
        printf("\n");
    }
} 
double log2(int x){
    return log(x) / log(2);
}
void queen(int x,int li,int lr,int rl){
    if(x > n){
        pr();
        return;
    }
    int z = li | lr | rl;
    z = z ^ ((1 << n) - 1);
    z = z & ((1 << n) - 1);
    while(z){
        int y = z & (-z);
        int l = int(log2(y)+1);
        s[x] = l;
        queen(x+1,li|(1<<(l-1)),(lr|(1<<(l-1)))>>1,(rl|(1<<(l-1)))<<1);
        z -= (z & (-z));
    }
}
int main(){
    freopen("checker.in","r",stdin);
    freopen("checker.out","w",stdout);
    scanf("%d",&n);
    queen(1,0,0,0); 
    printf("%d\n",ans);
    
    return 0;
}