首页 > 试题广场 >

小乐乐走台阶

[编程题]小乐乐走台阶
  • 热度指数:23978 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

小乐乐上课需要走n阶台阶,因为他腿比较长,所以每次可以选择走一阶或者走两阶,那么他一共有多少种走法?


输入描述:
输入包含一个整数n (1 ≤ n ≤ 30)


输出描述:
输出一个整数,即小乐乐可以走的方法数。
示例1

输入

2

输出

2
示例2

输入

10

输出

89
#走到第一阶只有一种方法:步1;
#走到第二阶有两种方法:2*步1和1*步2,;
#走到第三阶有两种方法:因为每次可以走一步和两步,则走到第三阶的步数为走到第二阶的方法数和走到第一阶的方法数之和
n=int(input())
a=[1,2]
for i in range(2,n):
    a.extend([a[i-1]+a[i-2]])
print(a[len(a)-1])

发表于 2020-12-24 23:04:32 回复(0)
#include <iostream>

int main()
{
    int n = 0;
    std::cin >> n;
    int f = 0, g = 1;
    while (0 < n--)
    {
        g = g + f;
        f = g - f;
    }
    std::cout << g;
}

发表于 2020-08-02 16:37:56 回复(0)
d = [1,2]
n = int(input())
if n <= 2:
    print(n)
else:
    for j in range(2,n):
        d.append(d[j-1] + d[j-2])
    print(d[n-1])
发表于 2020-04-06 20:21:43 回复(0)
#include <iostream>
using namespace std;
int f(int n)//递归思想
{
    if(n==1||n==0) return 1;
    else return f(n-1)+f(n-2);
}
int main()
{
    int n;
    cin>>n;
    cout<<f(n)<<endl;
    return 0;
}

发表于 2020-03-28 10:24:29 回复(0)
#include<stdio.h>
int Upstairs(int n)
{

    if (n == 1)
        return  1;
    else if (n == 2)
        return   2;
    else
        return Upstairs(n - 1) + Upstairs(n - 2);

}
int main()
{
    int n;
    scanf("%d", &n);
    printf("%d", Upstairs(n));
    return 0;
}
//俺只会这种比较基础的解法
发表于 2021-11-30 13:42:44 回复(0)
这道题我们可以用两种解法,均采用斐波那契数列思想。第一种是迭代累加和,第二种是动态规划
#include<bits/stdc++.h>
using namespace std;
int stage[30];
/*
第一种解法:
int main(){
    int n;
    cin >> n;
    int first = 1;
    int second = 2;
    for(int i = 3; i <= n; i++){
        int third = first + second;
        first = second;
        second = third;
    }
    cout << second << endl;
    return 0;
}
*/
//第二种解法:
int main(){
    int n;
    cin >> n;
    stage[1] = 1;
    stage[2] = 2;
    for(int i = 3; i <= n; i++){
        stage[i] = stage[i - 1] + stage[i - 2];
    }
    cout << stage[n] << endl;
    return 0;
}


发表于 2020-06-03 16:02:45 回复(1)
# 斐波那契数列问题,
a = 0
b = 1
n = int(input())
for i in range(n):
    a, b = b, a+b
print(b)
发表于 2020-07-23 10:38:10 回复(0)

                           JavaScript

function z(n){
    if(n==1) return 1;   
    if(n==2) return 2;
 
    return (z(n-1) + z(n-2));
}
 
 
var n = parseInt(readline());
console.log(z(n));


发表于 2020-06-23 09:06:44 回复(0)
#include <stdio.h>
// 斐波那契数列问题
// 思路:递推 + 回归
int main() {
    int n;
    while (scanf("%d", &n) != EOF) {
        int f, tmp, f1 = 0, f2 = 1;
        for(int i = 0; i < n; i++)
        {
            f = f1 + f2;
            tmp = f2;
            f2 = f1 + f2;
            f1 = tmp;
        }
        printf("%d\n", f);
    }
    return 0;
}
发表于 2023-03-09 18:50:33 回复(0)
var get = readline()
function Fib(n){
    return n<=2?n:Fib(n-1) + Fib(n-2)
}
console.log(Fib(get))

发表于 2022-04-30 02:17:17 回复(0)
#include<iostream>
using namespace std;
int dfs(int n)
{
    if (n == 1) return 1;
    if (n == 2) return 2;
    return dfs(n - 1) + dfs(n - 2);
}

int main()
{
    int n;
    cin >> n;
    cout << dfs(n) << endl;
    
}

发表于 2022-02-26 21:49:53 回复(0)

方案1:斐波那契数列递归

import java.util.*; public class Main{ public static void main(String[] args){
        Scanner sc = new Scanner(System.in); int n = sc.nextInt();
        System.out.println(method(n));
    } public static int method(int n){ if(n==1) return 1; if(n==2) return 2; return method(n-1)+method(n-2);
    }
}

方案2:动态规划

import java.util.*; public class Main{ public static void main(String[] args){
        Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = new int[n];
        arr[0] = 1;
        arr[1] = 2; for(int i = 2; i < arr.length; i++){
            arr[i] = arr[i-1]+arr[i-2];
        }
        System.out.println(arr[n-1]);
    }
}

方案3:数组优化

import java.util.*; public class Main{ public static void main(String[] args){
        Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int l=1,m=2; int sum; for(int i = 3; i <= n; i++){
            sum = l +m;
            l = m;
            m = sum;
        }
        System.out.println(m);
    }
}
发表于 2021-05-23 22:08:26 回复(0)
解法一:递归
let n = readline();

function f(n) {
    if (n === 0 || n === 1) {
        return 1;
    } else {
        return f(n-1)+f(n-2);
    }
}
console.log(f(n));

发表于 2021-03-08 21:56:21 回复(0)
#include <stdio.h>

int walking_ways(int n);

int main(void)
{
    int n;
    
    while (scanf("%d", &n) != EOF)
    {
        printf("%d\n", walking_ways(n));
    }
    
    return 0;
}

int walking_ways(int n)
{
    if (n == 0 || n == 1)
    {
        return 1;
    }
    else
    {
        return walking_ways(n - 1) + walking_ways(n - 2);
    }
}

发表于 2020-05-02 16:05:48 回复(0)
#include <stdio.h>

int Fib(int n)
{
    int a = 1;
    int b = 1;
    int c = 1;
    while (n > 1)
    {
        c = a + b;
        a = b;
        b = c;
        n--;
    }
    return c;
}
int main()
{
    int n = 0;
    scanf("%d", &n);
    int ret = Fib(n);
    printf("%d\n", ret);
    return 0;
}
发表于 2024-05-18 13:48:00 回复(0)
#include <stdio.h>
int fib(int n)
{
    if(n<=2)
    return n;
    else
    return fib(n-1)+fib(n-2);
}
int main() {
    int n=0;
    scanf("%d",&n);
    printf("%d\n",fib(n));
    return 0;
}

发表于 2024-01-14 16:59:28 回复(1)
def step(number):
    if number == 1:
        return 1
    if number == 2:
        return 2
    else:
        return step(number - 1) + step(number - 2)


n = int(input())
print(step(number=n))

发表于 2022-11-04 16:49:45 回复(0)
这是一个典型的斐波那鸡应用题:当前位置只能由两个地方来,一个是从下一级走上来,一个是从再下一级蹦上来,所以当前的最优解就是下一级的最优解加上再下一级的最优解。

def step(n):
    if n <= 2:
        return n
    else:
        return step(n-1)+step(n-2)
a=int(input())
print(step(a))


发表于 2022-08-28 10:34:05 回复(0)
#include <stdio.h>
int main()
{
    int n, a[31] = {0, 1, 2};
    scanf("%d", &n);
    for(int i = 3; i <= n; i++)
        a[i] = a[i-2]+a[i-1];
    printf("%d", a[n]);
    return 0;
}

发表于 2022-07-04 11:35:15 回复(0)

include<stdio.h>

int algo(int n){
if(n==1){
return 1;
}else if(n==2){
return 2;
}else{
return algo(n-1)+algo(n-2);
}
}
int main(){
int num=0;
scanf("%d",&num);
int ret=algo(num);
printf("%d",ret);
return 0;
}

发表于 2022-04-16 14:52:52 回复(0)

问题信息

上传者:牛客309119号
难度:
91条回答 4142浏览

热门推荐

通过挑战的用户

查看代码
小乐乐走台阶