剑指offer之变态跳台阶(C++)

题目

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

思路

今天的题目是变态跳台阶,昨天是跳台阶,昨天跳台阶只有两种跳跃类别,再加上题目的提示,猜到了f(n)=f(n-1)+f(n-2)这个关系,实话实说,这是投机取巧,猜到了解法也只是知其然而不知其所以然,所以今天这个题就麻爪了,搜呗,搜到一大神,将其所以然解释清楚了,大神的链接如下:https://blog.csdn.net/u013408863/article/details/106008031/。虽然大神解释的青蛙只能跳1级和2级的情况,但我们可以以此类推啊,那青蛙最后一跳跳3个台阶的跳法就是f(n-3)种,最后一跳跳4个台阶的跳法就是f(n-4)种,直到最后一跳跳n个台阶的时候,就是直接跳到最后,就1种,所以可以得出f(n)=f(n-1)+f(n-2)+f(n-3)+…+1。由此,我们就可以代码实现了。

代码

class Solution {
public:int jumpFloorII(int number) {int total = 0;if (number == 1){return total+1;}else{for (int i = 1; i< number; i++){total += jumpFloorII(i);}}return total + 1;}
};


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部