关于N个数1--N数顺序入栈,有多少种出栈方式的问题
来源:互联网 发布:酷音铃声mac版本 编辑:程序博客网 时间:2024/04/30 15:53
这是一个排列组合的问题,赫赫有名的卡特兰数
举例说明,共有一个1,2,3,4四个数,入栈方式有
1入,2入,3入,4入,4出,3出,2出,1出 故出栈顺序4,3,2,1
1入,1出,2入,3入,4入,4出,3出,2出 故出栈顺序1,4,3,2
1入,1出,2入,2出,3入,4入,4出,3出 故出栈顺序1,2,4,3
1入,1出,2入,2出,3入,3出,4入,4出 故出栈顺序1,2,3,4
1入,2入,2出,3入,4入,4出,3出,1出 故出栈顺序2,4,3,1
... ...
实际上解决此问题可以这样做:假设n个元素的出栈有 H(n)种方式,对于n>=2
假设索引为i个元素第一个出栈,那么后面的出栈方式分为两块,一个是 1-- i-1的出栈方式,其有H(i-1),另外是i+1至n的出栈方式,共有H(n-i):
故其对于元素索引为i的元素第一个出栈共有H(i-1)*H(N-i)种出栈方式
那么
H(N) = H(1-1)*H(N-1)+(2-1)*(N-2)+....+H(N-1)*H(1-1)取H(0)=1,H(1)=1,这是一个标准的求取卡特兰数问题
C语言代码实现为一下:递归实现
int catlin(int N)
{
if (0 == N || 1 == N) return 1;
int sum = 0;
for (int i = 0; i < N; i++)
sum += catlin(i)*catlin( N - i - 1);
return sum;
}
对应的排列组合为C(2n,n) - C(2n,n+1)
0 0
- 关于N个数1--N数顺序入栈,有多少种出栈方式的问题
- n个数依次入栈,出栈顺序有多少种?
- n个数依次入栈,出栈顺序有多少种
- N个数依次入栈,出栈顺序有多少种
- N个数依次入栈,出栈顺序有多少种
- 卡特兰数---n 个元素顺序入栈,则可能的出栈序列有多少种
- 从1到n的一个序列依次入栈,则一共可能有多少种出栈方式?
- 从1到n的一个序列依次入栈,则一共可能有多少种出栈方式?
- n元素顺序入栈,出栈的可能性有多少种
- n 个元素顺序入栈,则可能的出栈序列有多少种?
- n 个元素顺序入栈,则可能的出栈序列有多少种?
- n 个元素顺序入栈,则可能的出栈序列有多少种?<转>
- 已知入栈顺序的n个元素求合理的出栈序列有多少种
- 2013年腾讯笔试题:n个元素顺序入栈,出栈顺序有多少种?
- 数据结构_任意N个元素有多少种出栈顺序(卡特兰数证明)
- 给定一个N,求1-N之间有多少可以输出的数。
- 求0-n中有1的数的个数,没有1的数的个数
- 求1~r内有多少个数与n互素
- 全虚拟化&半虚拟化&硬件辅助搜索虚拟化&操作系统级虚拟化
- App右上角通知应用:iOS 8 用法
- ISP
- C语言结构体
- 能否一起做个学习C语言软件?
- 关于N个数1--N数顺序入栈,有多少种出栈方式的问题
- 王爽汇编语言程序设计总结
- MySQL日期数据类型、MySQL时间类型使用总结,需要的朋友可以参考下。【转】
- 写健壮的java代码读后感
- 解决struts2中validation.xml配置无效的问题
- HIVE 0.11版本的bug
- git学习(4)---工作流
- Windows多线程基础(6):线程间通信1(互锁函数、CriticalSection)
- JQuery 实现锚点链接之间的平滑滚动