0
点赞
收藏
分享

微信扫一扫

算法很美:小孩上楼梯

艾米吖 2022-03-11 阅读 72

题目描述

  • 三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。

Code

public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		int n=scanner.nextInt();
		long solve = solve2(n);
		System.out.println(solve);
	}
	
	//大数据是会出现栈溢出
	private static long  solve(int n) {
		if(n==1) return 1;
		if(n==2) return 2;
		if(n==3) return 4;
		//在n-1处往上迈1步  在n-2处往上迈2步   在n-3处往上迈3步
		return solve(n-1)+solve(n-2)+solve(n-3)%1000000007;
		
	}
	
	private static long  solve2(int n) {
		if(n==1) return 1;
		if(n==2) return 2;
		if(n==3) return 4;
		//在n-1处往上迈1步  在n-2处往上迈2步   在n-3处往上迈3步
		int x1=1,x2=2,x3=4;
		for (int i = 0; i < n-3; i++) {
			
			int t=x1;
			x1=x2;
			x2=x3;
			x3=(x1+x2+t)%1000000007;
		}
		return x3;
	}
举报

相关推荐

0 条评论