动态规划:
用于后面的结果可以由前面结果推导得出。解题要点在于分析出当前项(第n项)与前面一项(n-1项),(n-2项)......的关系,
然后设置好初始项的值,再利用推导关系即可解题。
如:
假设你现在正在爬楼梯,楼梯有 n 级。每次你只能爬 1 级或者 2 级,那么你有多少种方法爬到楼梯的顶部?
输入格式
第一行输入一个整数 n(1≤n≤50),代表楼梯的级数。
输出格式
输出爬到楼梯顶部的方法总数。
样例输入
5
样例输出
8
解题要点:
第n项与第n-1项和n-2项都有关系,
情况一:n=value(n-1)+1
情况二:n=value(n-2)+2
则,fun(n)=fun(n-1)+fun(n-2),fun(1)=1,fun(2)=2;
import java.util.Scanner;
public class Main {
private static int[] s=new int[51];
public static void main(String[] args) {
fun();
Scanner scanner = new Scanner(System.in);
int a=scanner.nextInt();
System.out.println(s[a]);
}
private static void fun(){
s[1]=1;
s[2]=2;
for (int i = 3; i < 50 + 1; i++) {
s[i]=s[i-1]+s[i-2];
}
}
}