首页 > 试题广场 >

跳格子游戏

[编程题]跳格子游戏
  • 热度指数:8982 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
假设你正在玩跳格子(所有格子排成一个纵列)游戏。需要 跳完n 个格子你才能抵达终点。
每次你可以跳 1 或 2 个格子。你有多少种不同的方法可以到达终点呢?
注意:给定 n 是一个正整数。

输入描述:
格子数n


输出描述:
跳完n个格子到达终点的方法
示例1

输入

2

输出

2
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] dp = new int[n+1];
        dp[0] = 1;
        dp[1] = 1;
        for(int i=2;i<=n;i++){
            dp[i] = dp[i-1]+dp[i-2];
        }
        System.out.print(dp[n]);

    }
}
发表于 2023-08-05 01:40:35 回复(0)
import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        BigInteger count = new BigInteger("0");
        for (int i = n & 1; i <= n; i += 2) {
            int t = i + (n - i) / 2;
            count = count.add(factorial(i + 1, t).divide(factorial(1, t - i)));
        }
        System.out.println(count);
    }

    private static BigInteger factorial(int start, int end) {
        BigInteger res = new BigInteger("1");
        for (int i = start; i <= end; i++) {
            res = res.multiply(new BigInteger("" + i));
        }
        return res;
    }
}


发表于 2020-04-23 15:22:58 回复(1)
/*
动态规划:dp[i]表示跳上i格的所有方法数
其中dp[i] = dp[i-1]+dp[i-2];
*/
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        int[] dp = new int[n+1];
        dp[0] = 1;dp[1] = 1;
        for(int i =2;i<=n;i++){
            dp[i] = dp[i-1]+dp[i-2];
        }
        System.out.println(dp[n]);
    }
}

发表于 2020-04-21 10:52:37 回复(0)
import java.util.Scanner;
//跳格子,一步或两部
//44
public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] di = new int[n+1];
		di[1] = 1;
		di[2] = 2;
		for(int i=3;i<n+1;i++){
			di[i] = di[i-1]+di[i-2];
		}
		System.out.println(di[n]);
	}
}

发表于 2019-09-14 14:52:28 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        System.out.println(ladder(a));
    }

    public static int ladder(int n) {
        if (n == 1) {
            return 1;
        } else if (n == 2) {
            return 2;
        } else {
            return ladder(n - 2) + ladder(n - 1);
        }
    }
}

发表于 2019-09-12 16:34:40 回复(0)
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        System.out.println(methods(n));
    }
    public static int methods(int n){
        if(n==1)
        {
            return 1;
        }
        else if(n==2)
        {
            return 2;
        }
        else{
            return (methods(n-1)+methods(n-2));
        }
        
    }
}
发表于 2019-06-11 18:47:38 回复(0)