poj 1240 Pre-Post-erous!

原创 2012年03月26日 14:39:12

题目链接:http://poj.org/problem?id=1240

题目大意:给定一棵K叉树的先序遍历和后序遍历,问有多少种这样的树。因为字符串的每个字符都是不同的,所以可以确定一个根节点下有几个儿子和每棵子树所在的区间。用递归实现即可。

#include<stdio.h>
#include<string.h>
#include<string>
using namespace std;
int c[22][22];
int m;
char str1[30],str2[30];
void init()
{
	int i,j;
	for(i=0;i<22;i++)
		c[i][0]=1;
	for(i=0;i<22;i++)
		c[i][i]=1;
	for(i=1;i<22;i++)
		for(j=1;j<i;j++)
		{
			c[i][j]=c[i-1][j-1]+c[i-1][j];
		//	printf(" i %d j %d c%d\n",i,j,c[i][j]);
		}
}
int dfs(int st1,int ed1,int st2,int ed2)
{
//	printf("co\n");
	int tmp,i;
	int rec=1;
	int num=0;
	if(ed1-st1==-1)
		return 1;
	while(st1<=ed1)
	{
		for(i=st2;i<=ed2;i++)
		{
			if(str2[i]==str1[st1])
			{
				tmp=i;
				num++;
				break;
			}
		}
	//	printf("st1 %d ed1 %d tmp %d \n",st1,ed1,tmp);
		rec*=dfs(st1+1,st1+tmp-st2,st2,tmp-1);
		st1=st1+tmp-st2+1;
		st2=tmp+1;
	}
	return rec*c[m][num];
}
int main()
{
	init();
	int len;
	int rec;
	while(scanf("%d",&m),m)
	{
		scanf("%s%s",str1,str2);
		len=strlen(str1);
	//	printf("a");
		rec=dfs(1,len-1,0,len-2);
	//	printf("kkkk\n");
		printf("%d\n",rec);
	}
	return 0;
}


 

相关文章推荐

POJ1240 Pre-Post-erous! 【待完成】

#include #include #define maxn 28 char pre[maxn], post[maxn]; int k; int cal(int n, int m){ if(...

poj1240 Pre-Post-erous!

照例先上题目: 1:Pre-Post-erous! 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 We are all familiar with pre-or...
  • mach7
  • mach7
  • 2014年03月13日 10:45
  • 1194

zoj 1500 Pre-Post-erous!

题意:一个k叉树,给定其前序和后序遍历,问其中序遍历方式有多少种。 思路:给定前序和中序无法唯一的确定一棵k叉树,但是每一个结点所在的深度       却是唯一的。本题可用递归进行计算。每次递归获...

【腾讯TMQ】MBT探索系列 – PRE/POST 模型在网络接口测试MBT的应用和探索

目录⊙MBT 是什么?⊙PRE/POST 模型是什么?⊙如何建立PRE/POST模型?⊙OCL是什么?⊙OCL怎么建立PRE/POST模型?⊙PRE/POST模型MBT 实践一、MBT是什么MBT中文...
  • TMQ1225
  • TMQ1225
  • 2016年11月29日 15:54
  • 513

In sum for pre- / In- and Post- order Traversal

Preorder binary tree traversal is a classic interview problem about trees. The key to solve this pro...

Matrix pre post set操作的含义

部分是转载的 首先要完全理解矩阵操作需要学习高等数学中的课程线性代数 pre, post 是前乘, 后乘的意思 也就是说 原始矩阵B, 变换矩阵为A pre操作: A*B po...

PAT A1119. Pre- and Post-order Traversals (30)

Suppose that all the keys in a binary tree are distinct positive integers. A unique binary tree can ...
  • jolivan
  • jolivan
  • 2017年03月06日 19:08
  • 142

<LeetCode OJ> 144 / 145 / 94 Binary Tree (Pre & In & Post) order Traversal

在此之前回顾前序遍历和中序遍历: 1,前序遍历: 基本规则,总是先访问根节点在左节点,在右节点 递归解法: class Solution { public: vector result; ...

1119. Pre- and Post-order Traversals

Suppose that all the keys in a binary tree are distinct positive integers. A unique binary tree can ...

1119. Pre- and Post-order Traversals (30)

1119. Pre- and Post-order Traversals (30) 时间限制 400 ms 内存限制 65536 kB 代...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj 1240 Pre-Post-erous!
举报原因:
原因补充:

(最多只允许输入30个字)