39级台阶暴力破解,新手上路求老司机带带!

我想了很久真的做不出来,忍不住求人了!求大神们讲解一下解题思路!新手上路,求老司机带带,

    //动态DP思想
    //创建一个39*2数组的二维数组s[i][j]
    //i表示第N级台阶,j表示在该台阶上为左脚0,右脚1
    //s[i][j]表示在i级台阶,刚好为j脚,总共可能得情况个数
    int[][] s = new int[39][2];
    //定义初始值,数组是从0-38,表示1-39级台阶
    //以下四个初始值你都不理解得话,别学编程了
    s[0][0]=1;//第一级台阶,左脚的情况个数只有1次
    s[0][1]=0;//第一级台阶,右脚的情况个数只有0次,因为第一次漫的必定为左脚
    s[1][0]=1;//第二级台阶,左脚的情况个数只有1次
    s[1][1]=1;//第二级台阶,右脚的情况个数只有1次
    //循环计算
    for(int i = 2;i<39;i++){
        //s[i][0]的值刚好是s[i-1][1]的情况再漫左脚一个台阶,刚好到达s[i][0]
        //或者s[i-2][1]的情况再漫左脚两个台阶,刚好到达s[i][0]
        //所以s[i][0]的值等于以上两个之和
        s[i][0] = s[i-1][1] + s[i-2][1];
        //原理同上
        s[i][1] = s[i-1][0] + s[i-2][0];
    }

第一次看到这么有耐心的人解答!爱你❤❤❤❤❤❤❤