题解 | #跳台阶扩展问题#
跳台阶扩展问题
http://www.nowcoder.com/practice/22243d016f6b47f2a6928b4313c85387
动态规划初级题
Floor(n) = Floor(n-1) + Floor(n-2) + ... + Floor(1) + 1
用一个数组来存储每一个台阶的方法数,这样就可以不用每次计算Floor(n-1)或者Floor(n-1)。
然后咱们顺序地从Floor(1)算起,将结果存到methodArray中;
再算Floor(2),从methodArray取出Floor(1)结果再加1;
同理,继续Floor(3)、Floor(4)算上去,直到Floor(n-1)、 Floor(n)。
methodArray的意义在于存储结果,避免重复算Floor(m)。
public class Solution { private int[] methodArray = new int[10000]; public int jumpFloorII(int target) { for (int i = 0; i <= target; i++) { for (int j = i - 1; j > 0; j--) { methodArray[i] += methodArray[j]; } methodArray[i]++; } return methodArray[target]; } }