大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
n<=39
1 1 2 3 5...
C++:
1 class Solution { 2 public: 3 int Fibonacci(int n) { 4 if (n == 1) 5 return 1 ; 6 int f1 = 0 ; 7 int f2 = 1 ; 8 int f3 = 0 ; 9 for(int i = 2 ; i <= n ; i++){ 10 f3 = f1 + f2 ; 11 f1 = f2 ; 12 f2 = f3 ; 13 } 14 return f3 ; 15 } 16 };
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法
1 2 3 5...
f(n)=f(n-1)+f(n-2)
注意 f1=1 f2=2
C++:
1 class Solution { 2 public: 3 int jumpFloor(int number) { 4 if (number == 1) 5 return 1 ; 6 int f1 = 1 ; 7 int f2 = 1 ; 8 int f3 = 0 ; 9 for(int i = 2 ; i <= number ; i++){ 10 f3 = f1 + f2 ; 11 f1 = f2 ; 12 f2 = f3 ; 13 } 14 return f3 ; 15 } 16 };
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
一样的做法
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
f(n)=2^(n-1)
C++:
1 class Solution { 2 public: 3 int jumpFloorII(int number) { 4 return pow(2,number-1) ; 5 } 6 };
java:
1 public int JumpFloorII(int n) { 2 int[] dp = new int[n]; 3 Arrays.fill(dp, 1); 4 for(int i = 1; i < n; i++) { 5 for(int j = 0; j < i; j++) { 6 dp[i] += dp[j]; 7 } 8 } 9 return dp[n - 1]; 10 }