递归
一定要早睡的小龙
早睡早起身体棒
展开
-
入出栈序列的种数—递归及卡特兰数(Catalan)实现
问题描述: 上学期数据结构课讲栈的时候,老师曾出过这样一个问题,将1,2,3这三个数依次进栈,问出栈的序列有多少种?嘻嘻,大家不妨先在草稿纸上先写一下所能想到的序列,看来大家都很聪明,一共是有5种,即123、132、213、231、321。解题思路: 首先想到的是用递归实现,一共有三种操作 ①栈为空时,必须入栈而不能出栈 ②入栈 ③出栈 这里要注意的是,当全部元素入栈后,出栈序列其实就...原创 2018-03-24 16:20:33 · 1922 阅读 · 0 评论 -
汉诺塔问题
汉诺塔汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作?这其实也是一个经典的递归问题。比如有64...原创 2018-06-23 19:52:24 · 4966 阅读 · 5 评论 -
生成全排列和可重集排列
1.生成1~n的全排列第一种方式:void permutation(int a[], int n, int cur) { //数组a不用初始化 if(cur == n) { for(int i = 0; i < n; i++) { cout << a[i] << " "; } cout << "\n"; } else ...原创 2018-11-20 12:26:04 · 1009 阅读 · 0 评论