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;
}


 

POJ 1240 Pre-Post-erous! 前序+后序遍历判断树的形状的数量

Pre-Post-erous! Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2356 Accepted: 1...
  • LuRiCheng
  • LuRiCheng
  • 2016年10月22日 21:35
  • 166

POJ 4083 我爱北大

这道题真的是目前为止见过的最有情怀的题目之一,感觉做完以后就不再爱北大了…1、因为最后要求输出任意两个路径之间的最短距离,因此我选择使用的Floyd算法(数据比较弱,样例代码是贪心,应该也能过),Fl...
  • qq_32817311
  • qq_32817311
  • 2015年11月17日 17:16
  • 1078

POJ 难度及题型题目分类

OJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094) 初期:...
  • u010871244
  • u010871244
  • 2013年07月16日 10:34
  • 1941

(经典)POJ-3280 回文串DP

题目大意:给定一个字符串S及其长度M与S所含有的字符种数N(最多26种小写字母),然后给定这N种字母Add与Delete的代价,求将S变为回文串的最小代价和。 题目链接:点击打开链接 分析: ...
  • AC_hell
  • AC_hell
  • 2016年05月12日 19:36
  • 555

poj1623 象限四分树

Squadtrees Time Limit: 10000MS   Memory Limit: 32768K Total Submissions: 389   Acc...
  • u012866104
  • u012866104
  • 2015年06月22日 14:21
  • 1079

poj初期基本算法

想想接触ACM已经一年了,参加ACM也半年了。大四只有少量的课程,一般都准备考研、找工作、实习了。想想我的大学生活俨然已经走过了一半,一年半以来,不说自己大学过得如何,至少做的还不算太差,时间过的真是...
  • consciousman
  • consciousman
  • 2017年01月13日 17:30
  • 858

北大POJ题库使用指南

[转载]北大POJ题库使用指南  (2012-03-30 21:54:45) 转载▼ 标签:  转载 分类: ACM 原文地址:...
  • Enjoying_Science
  • Enjoying_Science
  • 2014年11月05日 19:59
  • 3196

POJ题目分类推荐 (很好很有层次感)

OJ上的一些水题(可用来练手和增加自信)  (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094) 初期...
  • verticallimit
  • verticallimit
  • 2013年09月15日 21:00
  • 17823

POJ测试数据合集

本文部分链接可能已失效 测试数据仅供参考学习之用 希望各位同学不要用来刷题 ====================================   1、USACO ...
  • bat67
  • bat67
  • 2017年05月10日 22:55
  • 736

POJ Matrix ( 二维树状数组)

题目大意:给你一个N * N的矩阵A,有Q次操作; 1. C x1 y1 x2 y2 ,将(x1 , y1) (x2 , y2)包含的子矩阵的数值翻转,即0变1 , 1 变0 2. Q x ...
  • u013961718
  • u013961718
  • 2015年09月01日 21:44
  • 419
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj 1240 Pre-Post-erous!
举报原因:
原因补充:

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