题目1044:Pre-Post

    xiaoxiao2021-04-15  57

    #include<stdio.h> #include<string.h> #define LEN 30 int m; char pre[LEN],post[LEN]; int outcome; int compute(int n,int m){     int out=1,outd=1;     for(int i=0;i<m;i++){         out*=(n-i);         outd*=(i+1);     }     return out/outd; } void handle(int beginpr,int beginpo,int endpo){     char root=pre[beginpr];     int node=0,first=beginpr;     int i=beginpo,j=i;       while(true){//i         if(i>endpo)break;         for(;i<=endpo;i++){             if(root==post[i])break;         }         if(i!=j){             handle(first+1,j,i-1);         }         node++;         i++;         first=i-beginpo+beginpr;         root=pre[first];         j=i;                         }     outcome*=compute(m,node); } int main(){     while(scanf("%d%s%s",&m,pre,post)!=EOF){     outcome=1;     int k=strlen(post);     handle(1,0,k-2);     printf("%d\n",outcome);     }     return 0; } /**************************************************************     Problem: 1044     User: cust123     Language: C++     Result: Accepted     Time:0 ms     Memory:1020 kb ****************************************************************/

    转载请注明原文地址: https://ju.6miu.com/read-671327.html

    最新回复(0)