poj1240Pre-Post-erous!

来源:互联网 发布:手机淘宝app改评价 编辑:程序博客网 时间:2024/05/21 12:21

题目大意:

给你一个K叉树的前序遍历和后续遍历,问你K叉树可能的形状有多少种。

结题思路:

其实我也不是搞得很明白,模模糊糊的样子,看代码吧又好像是那么回事。。。。

#include<stdio.h>#include <string.h>#define N 30int C[N][N];char pre[N],post[N];int n,m,root,ans;void Com(){    memset(C,0,sizeof(C));    for(int i=0;i<N;i++)    {        C[i][0] = 1;    }    for(int i=1;i<N;i++)    {        for(int j=1;j<=i;j++)        {            C[i][j] = C[i-1][j-1] + C[i-1][j];        }    }    return;}void dfs(int st,int ed){    int i,son=0;    for(i=st;i<=ed;i++)    {        if(post[i]==pre[root])        {            ++son;            ++root;            dfs(st,i-1);            st=i+1;        }    }    ans*=C[m][son];}int main(){    Com();    while(scanf("%d",&m) && m)    {        scanf("%s %s",pre,post);        n = strlen(pre);        root=1;        ans=1;        dfs(0,n-2);        printf("%d\n",ans);    }    return 0;}


0 0
原创粉丝点击