例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一级,第二次走两级,也可以第一次走两级,第二次走一级,一共3种方法。
输入包含若干行,每行包含一个正整数N,代表楼梯级数,1≤N≤30。
不同的走法数,每一行输入对应一行输出。
这道题其实是斐波那契数列。
可以不需要暴力求解,因为每一次都需要走一个或两个阶梯,由此可以得出在爬最后一个楼梯的时候有两种方式,要么是走一级,要么是走两级。例如我们走到第8个楼梯,只需要找到第7和第6个分别有多少种方法,然后再进行相加最后得出的结果就是第8个楼梯总共的走法。
我们可以再接着进行拆分。最后可以得出F(n) = F(n-1)+F(n-2) (n>=3)。
代码展示
```java
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n =sc.nextInt(); if (n==1||n==2){ System.out.println(n); }else { int a = 1; int b = 2; int result= 0; for (int i = 3; i <= n; i++) { result = a + b; a = b; b = result; } System.out.println(result); } } }
```
第一次看这道题的时候我想到的是暴力求解,一 一列举出来。后来才发现,这道题有更好的方法去做,所以有时候静下心来仔细思考一道题还是有必要的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)