1 条题解

  • -1
    @ 2021-5-24 13:42:59

    C++ :

    #include <iostream>
    #include <fstream>
    #define maxn 109
    #include <cstring>
    using namespace std;
    int n,s1,s0,q;
    
    int b[maxn];
    void xxx(int k);
    void xx(int a);
    int main()
    {   scanf("%d",&n);
        memset(b,-1,sizeof(b));
    
          xxx(1);
          printf("%d\n",q);
          xx(1);
        return 0;
    }
    
    
    void xxx(int k)
    {  if(k==2*n+1){q++;
    return;
    }
       for(int i=0;i<=1;i++){
        b[k]=i;
    
        if(b[k]==0){s0++;}
        if(b[k]==1){s1++;}
        if(s0>=s1 && s0<=n){xxx(k+1);}
    
        if(b[k]==0){s0--;}
        if(b[k]==1){s1--;}
       }
    
    
    }
    void xx(int a)
    {  if(a==2*n+1){
    for(int i=1;i<=2*n;i++){
        printf("%d ",b[i]);
    
    }printf("\n");return;
    }
       for(int i=0;i<=1;i++){
        b[a]=i;
    
        if(b[a]==0){s0++;}
        if(b[a]==1){s1++;}
        if(s0>=s1 && s0<=n){xx(a+1);}
    
        if(b[a]==0){s0--;}
        if(b[a]==1){s1--;}
       }
    
    
    }
    
    
    • 1

    信息

    ID
    92
    时间
    1000ms
    内存
    128MiB
    难度
    3
    标签
    递交数
    87
    已通过
    49
    上传者