题目1044:Pre-Post

来源:互联网 发布:php扩展库有哪些 编辑:程序博客网 时间:2024/05/18 15:52

#include<stdio.h>#include<string.h>#define LEN 30int 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****************************************************************/


0 0
原创粉丝点击