1.跳台阶 public class Solution{ public int JumpFloor(int target){ int a=1,b=1; for(int i=1;i<target;i++){ a=a+b; b=a-b; } return a; } } 思路:斐波那契思想 1.从第n个台阶进行下台阶,下一步有2种可能,一种走到第n-1个台阶,一种是走到n-2个台阶。所以法f[n]=f[n-1]+f[n-2]; 1.初始条件f[0]=f[1]=1 2.a=a+b;b=a-b; 2.跳台阶扩展问题 public class Solution{ public int jumpFloorII(int target){ return (int) Math.pow(2,target-1); } } f[0]=f[1]=1 f[2]=2=21 f[3]=4=22 f[4]=8=23 ... f[n]=2^(n-1) 思路:2^(n-1) 3.矩阵覆盖 public class Solution{ public int rectCover(int target){ int number=1; int sum=1; if(target<=0) return 0; if(target==1) return 1; while(target-->=2){ sum+=number; number=sum-number; } return sum; } } 思路:1.n=1 ,有一种方法。 n=2,有两种方法。 n=3,有三种方法。 f[n]=f[n-1]+f[n-2] sum=sum+number