剑指offer源码系列-跳台阶

这是一个斐波那契数列的变形

题目1388:跳台阶
时间限制:1 秒内存限制:32 兆特殊判题:否提交:3030解决:1226
题目描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
输入:
输入可能包含多个测试样例,对于每个测试案例,
输入包括一个整数n(1<=n<=70)。
输出:
对应每个测试案例,
输出该青蛙跳上一个n级的台阶总共有多少种跳法。
样例输入:
5
样例输出:
8
#include<iostream>
#include<stdio.h>
using namespace std;
//转递归为循环
long  long f(int n){
    if(n==1)return 1;
    if(n==2)return 2;
    long long sum=0;
    long long preOne=2;//n前一项
    long long preTwo=1;//n前两项
    for(int i=3;i<=n;i++){
        sum = preOne+preTwo;
        preTwo = preOne;
        preOne = sum;
    }
    return sum;
}
int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        printf("%ld\n",f(n));
    }
    return 0;
}

oj地址

时间: 2024-10-10 18:12:28

剑指offer源码系列-跳台阶的相关文章

剑指offer源码系列-变态跳台阶

题目1389:变态跳台阶 时间限制:1 秒内存限制:32 兆特殊判题:否提交:1906解决:1102 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n<=50). 输出: 对应每个测试案例, 输出该青蛙跳上一个n级的台阶总共有多少种跳法. 样例输入: 6 样例输出: 32 解法分析: 分析:用Fib(n)表示青蛙跳上n阶台阶的跳法数,青蛙

剑指offer源码系列-树的子结构

输入两颗二叉树A,B,判断B是不是A的子结构. #include<stdio.h> #include<iostream> using namespace std; struct BinaryTreeNode{ int value; BinaryTreeNode* left; BinaryTreeNode* right; }; //递归判断结点是否相等 bool doesTree1HasTree2(BinaryTreeNode* aRoot,BinaryTreeNode* bRoot

剑指offer(8)跳台阶

题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 解题代码: function jumpFloor(number) { // write code here //跳台阶问题是斐波那契数列的一个形式转换,要跳上n级台阶 //如果第一步跳1级,剩下台阶的跳法即为跳上n-1级台阶的跳法 //如果第一步跳2级,剩下台阶的跳法即为跳上n-2级台阶的跳法 if(number <= 2){ return number; } va

《剑指Offer》题目:跳台阶

题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 题目分析:这其实就是斐波拉契数列,递归的思想,用递推来实现,防止栈溢出. public class JumpFloor { public static int jumpFloor(int target) { int res[] = new int[2]; res[0]=1; res[1]=2; // 与前面的题只有初始值不一样 int temp = 0; if(target==0) return

剑指offer源码-旋转数组的最小数字

题目1386:旋转数组的最小数字 时间限制:1 秒内存限制:32 兆特殊判题:否提交:5659解决:1273 题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入的第一行为一个整数n(1<= n<=1000000):代表旋转数组的元素个数. 输入的第二行包括n个整数,

剑指offer9:青蛙变态跳台阶,1,2,3……,n。

1. 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 2. 思路和方法 每个台阶都有跳与不跳两种情况(除了最后一个台阶),最后一个台阶必须跳.所以共用2^(n-1)中情况.换个表述可能更容易懂一点:小鸟要从起点0飞到终点N.中间有1~n-1个点可以中途停靠休息,它可以休息可以不休息,休息次数不限.问,到终点时,一共有多少种情况. 实现放方法: F(n) = F(n-1)+F(n-2)+...+F(1):F(n-1) = F

剑指OFFER----面试题10- II. 青蛙跳台阶问题

链接:https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/ 代码: class Solution { public: int numWays(int n) { std::vector<int> vec = {1, 1}; for(int i = 2; i <= n; i++){ vec.push_back((vec[i-2] + vec[i-1])%1000000007); } return vec[n];

《剑指offer》题解

有段时间准备找工作,囫囵吞枣地做了<剑指offer>提供的编程习题,下面是题解收集. 当初没写目录真是个坏习惯(-_-)||,自己写的东西都要到处找. 剑指Offer - 九度1524 - 复杂链表的复制 剑指Offer - 九度1509 - 树中两个结点的最低公共祖先 剑指Offer - 九度1508 - 把字符串转换成整数 剑指Offer - 九度1504 - 把数组排成最小的数 剑指Offer - 九度1503 - 二叉搜索树与双向链表 剑指Offer - 九度1390 - 矩形覆盖 剑

剑指offer算法总结

剑指offer算法学习总结 节选剑指offer比较经典和巧妙的一些题目,以便复习使用.一部分题目给出了完整代码,一部分题目比较简单直接给出思路.但是不保证我说的思路都是正确的,个人对算法也不是特别在行,只不过这本书的算法多看了几遍多做了几遍多了点心得体会.于是想总结一下.如果有错误也希望能指出,谢谢. 具体代码可以参考我的GitHub仓库: https://github.com/h2pl/SwordToOffer 数论和数字规律 从1到n整数中1出现的次数 题目描述 求出1~13的整数中1出现的