定义:动态规划的核心思想就是将大问题逐步拆分,化解成小问题,或者是寻找局部的最优解。(分治,动态规划,递推,记忆搜索感觉都有异曲同工之妙)。
使用技巧:①写代码的时候首先注意起始点,因为使用局部规律一步步计算得到后面的数。②确定规律,此题的规律就是一个斐波那契数列。③需要将之前的计算结果记录下来,以便后续的计算。④有时候也需要确定边界。
//动态规划解法 初始 规律 分界
class Solution {
public int climbStairs(int n) {
//f【n】=f【n-1】+f【n-2】
//记忆
int three=0;
int one=1;
int tow=2;//有待改进,初始数1就可以有规律
if(n==1){return one;}
else if(n==2){return tow;}
else{ for(int i=2;i<n;i++){
three=one+tow;
one=tow;
tow=three;
}
return three;}
}
}