Climbing Stairs

来源:互联网 发布:夏普网络扫描仪工具 编辑:程序博客网 时间:2024/05/23 10:30
public class Solution {      public int climbStairs(int n) {        if(n == 0){  //n为零,零种走法            return 0;          }          if(n == 1){  //n为一,一种走法            return 1;          }          if(n == 2){  //n为二,两种走法            return 2;          }        int[] mem = new int[n];        mem[0] = 1;  //n为一,一种走法        mem[1] = 2;  //n为二,两种走法        for(int i = 2 ; i <= n - 1 ; i++){              mem[i] = mem[i - 1] + mem[i - 2];            //这个循环会持续n-2次            //m[2]=m[1]+[0] m[3]=m[1]+m[2] m[4]=m[2]+m[3] ... m[n-1]=m[n-2]+m[n-3]            //从m[2]到m[n-1],一次一次算上去就不需要重复算了!!        }          return mem[n-1];      }  }  

http://blog.csdn.net/xinglu31/article/details/24494801

盗用了这哥们的解解法,加了点注释。

dynamic programming关键还是要想到子问题~

0 0
原创粉丝点击