1 条题解

  • 0
    @ 2022-11-17 16:30:13
    #define MAX 110
    using namespace std;
    int n,sum,ans[MAX],vis[3][MAX];
    void dfs(int x){
    int i;
    if(x==n+1){
    sum++;
    if(sum<=3){
    for(i=1; i<=n; i++){
    if(i==1)printf("%d",ans[i]);
    else printf(" %d",ans[i]);
    }
    printf("\n");
    return ;
    }
    }
    for(i=1; i<=n; i++){
    if(!vis[0][i]&&!vis[1][x+i]&&!vis[2][x-i+n]){vis[0][i]=vis[1][x+i]=vis[2][x-i+n]=1;ans[x]=i;dfs(x+1);vis[0][i]=vis[1][x+i]=vis[2][x-i+n]=0;}
    }
    }
    int main(){
    scanf("%d",&n);
    memset(ans,0,sizeof(ans));
    memset(vis,0,sizeof(vis));
    dfs(1);
    printf("%d\n",sum);
    }
    
    • 1

    信息

    ID
    564
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    25
    已通过
    7
    上传者