POJ 1240 Pre-Post-erous! 由前序后续遍历顺序推m-叉树的个数

题意:给定m-叉树(1<=m<=20)的前序和后续遍历,求出一共有多少满足条件的树。数据不会超int。

题解:中序+前序 -> 唯一的后序,中序 + 后序 -> 唯一的前序,但是前序 + 后序 -x> 中序,因为根是不固定的,明白这个就很容易想出这个问题了。

         首先dfs确定每棵子树在前序和后序中对应的范围,然后统计子树个数,通过组合数求解即可。


Sure原创,转载请注明出处。

#include 
#include 
#include 
using namespace std;
const int maxn = 30;
int C[maxn][maxn];
char pre[maxn],post[maxn];
int n,m;

void prepare()
{
    memset(C,0,sizeof(C));
    for(int i=0;i

你可能感兴趣的:(dfs,&&,bfs)