摘要: 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解题思路: 要想跳到第n级台阶,就可以从第n-1级、第n-2级、***、第1级 跳到第n级,再加上直接从地面到第n级的一种情况。 将问题分解为求子问题递归。 阅读全文
posted @ 2020-08-12 11:40 手下留情 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 解题思路: 这是一道经典的递推题目,你可以想如果青蛙当前在第n级台阶上,那它上一步是在哪里呢? 显然,由于它可以跳1级台阶或者2级台阶,所以它上一步必定在第n-1,或者第n-2级台阶,也就是说它跳上n级台阶的跳法数是跳上n-1和跳上n-2级台阶的跳法数之和。 设跳上 级台阶有 种跳法,则它跳上n级的台阶有 种跳法。 然后,我们又思考初始()的情况,跳上1级台阶只有1种跳法,跳上2级台阶有2种跳法,最终我们得到如下的递推式: 阅读全文
posted @ 2020-08-12 11:18 手下留情 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 求斐波那契数列的第 n 项,n <= 39。 解题思路: 如果使用递归求解,会重复计算一些子问题。例如,计算 f(4) 需要计算 f(3) 和 f(2),计算 f(3) 需要计算 f(2) 和 f(1),可以看到 f(2) 被重复计算了。 阅读全文
posted @ 2020-08-12 09:52 手下留情 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 用两个栈来实现一个队列,完成队列的 Push 和 Pop 操作。 解题思路: in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先进入的元素先退出,这就是队列的顺序。 阅读全文
posted @ 2020-08-12 09:27 手下留情 阅读(63) 评论(0) 推荐(0) 编辑