1029 遍历问题
来源:互联网 发布:剑三周边淘宝商城 编辑:程序博客网 时间:2024/06/07 13:47
题目描述 Description
我们都很熟悉二叉树的前序、中序、后序遍历,在数据结构中常提出这样的问题:已知一棵二叉树的前序和中序遍历,求它的后序遍历,相应的,已知一棵二叉树的后序遍历和中序遍历序列你也能求出它的前序遍历。然而给定一棵二叉树的前序和后序,你却不能确定其中序遍历序列,考虑如下图中的几棵二叉树:
所有这些二叉树都有着相同的前序遍历和后序遍历,但中序遍历却不相同。
输入描述 Input Description
输入文件共2行,第一行表示该树的前序遍历结果,第二行表示该树的后序遍历结果。输入的字符集合为{a-z},长度不超过26。
输出描述 Output Description
输出文件只包含一个不超过长整型的整数,表示可能的中序遍历序列的总数。
样例输入 Sample Input
abc
cba
样例输出 Sample Output
4
DP思想
#include<cstdio>#include<string>#include<cstring>int p[27],q[27],f[27][27];int main(){char a[27],b[27];scanf("%s",a+1);scanf("%s",b+1); int lena=strlen(a+1);for(int i=1;i<=lena;i++) for(int j=1;j<=lena;j++) if (a[i]==b[j]){p[i]=j;q[j]=i;break;}for(int i=1;i<=lena;i++) f[1][i]=1;for(int i=2;i<=lena;i++) for(int j=1;j<=lena-i+1;j++){f[i][j]=0;if(p[j+1]==p[j]-1)f[i][j]=2*f[i-1][j+1];else f[i][j]+=f[q[p[j]-1]-j-1][j+1]*f[p[j]-p[j+1]-1][q[p[j]-1]];} printf("%d\n",f[lena][1]); return 0;}
0 0
- wikioi 1029 遍历问题
- 1029 遍历问题
- CODEVS 1029 遍历问题
- [codevs] 1029 遍历问题
- 【codevs 1029】遍历问题
- 【codevs 1029】遍历问题
- 1029 遍历问题
- codevs 1029 遍历问题
- codevs 1029 遍历问题
- CODEVS 1029 遍历问题 题解
- Code[VS] 1029 遍历问题
- CODE[VS] 1029 遍历问题
- CODE[VS]1029 遍历问题
- 遍历问题
- 遍历问题
- 遍历问题
- codevs (wikioi)1029遍历问题
- code vs 1029 遍历问题 区间dp
- Android网络请求库android-async-http使用
- 快速学习正则表达式
- Reduce inversion count
- 呵呵
- 手把手学习——ant脚本打包APK
- 1029 遍历问题
- android 之 .9图制作
- Android设备HeartBleed漏洞影响分析
- 重新创建activity
- STM32输入上拉下拉 寄存器怎么设置…
- Android:hierarchy viewer unable to debug device 问题
- MATLAB 中NORM运用
- 转:STM32外部中断的使用
- android:windowSoftInputMode属性详解(解决软键盘弹出布局调整问题)