跳台阶
有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或者二级,要走上m级,共有多少走法?注:规定从一级到一级有0种走法。
给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100。为了防止溢出,请返回结果Mod 1000000007的值。
public static int CaculateNumber(int n){
int [] cn=new int[n];
cn[0]=0;
cn[1]=1;
cn[2]=2;
for (int i=3;i<n;i++){
cn[i]=(cn[i-1]+cn[i-2])%1000000007;
}
return cn[n-1];
}
变态跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
解法一:
public class Solution {
public int JumpFloorII(int target) {
if(target<0)return 0;
int[] a=new int[target+1];
a[0]=1;a[1]=1;
for(int i=2;i<=target;i++){
a[i]=0;
for(int j=0;j<i;j++){
a[i]+=a[j];
}
}
return a[target];
}
}
解法二:
对于每个梯子可以选择跳上去,也可以不选择,但是最后一个必须选择,所以应该是2^(target-1)
public class Solution {
public int JumpFloorII(int target) {
return 1<<target-1;
}
}