案例1
有n级台阶,一个人每次上一级或者两级,问有多少种走完n级台阶的方法。
分析:
走到第i级台阶,需要之前走到第i-1级台阶或第i-2级台阶。
所以,走完i级台阶的方法说=走完i-1级台阶的方法数+走完i-2级台阶的方法数
有了初始值和表达式,下可写出暴力搜索的代码
public int s1(int n){
if(n<1){
return 0;
}
if(n==1||n==2){
return n;
}
return s1(n-1)+s2(n-2);
}
案例2
有题意可直接得第一行第一列的结果。
计算方式,先从左到右,再从上到下。
案例3
下从左到右依次计算
状态方程
就是,到求dp[i]时,找到i前面所有比arr[i]小的数,然后选择其dp值最大的,再加1.
最后,选择dp[i]中最大的值,就是本题结果。
案例4
案例5
案例5