《剑指offer2》问题10 青蛙跳台阶&&变态跳台阶 Java实现
2017-08-24 12:32
489 查看
题目来源:剑指offer
1.一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路:斐波那契。动态规划
public class Solution { public int JumpFloor(int target) { //dp if(target<=0) return 0; int dp[]=new int[target]; dp[0]=1; if(target==1) return dp[0]; dp[1]=2; for(int i=2;i<target;i++){ dp[i]=dp[i-1]+dp[i-2]; } return dp[target-1]; } }2.
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路:f(n)=2^(n-1)
public class Solution { public int JumpFloorII(int target) { if(target<=0) return 0; if(target==1) return 1; return 2<<target-2;//f(n)=2^n-1; } }
3.矩形覆盖
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
public class Solution { public int RectCover(int target) { if(target<1) return 0; if(target==1) return 1; int dp[]=new int[target]; dp[0]=1; dp[1]=2; for(int i=2;i<target;i++) dp[i]=dp[i-1]+dp[i-2]; return dp[target-1]; } }
相关文章推荐
- JAVA实现变态跳台阶问题(《剑指offer》)
- JAVA实现变态跳台阶问题(《剑指offer》)
- 青蛙跳台阶问题 java实现
- 数字问题之二进制1数问题<Java实现>
- 经典线程同步问题(生产者&消费者)--Java实现
- 字符串问题之串移包含问题<Java实现>
- 【剑指offer】二,变态跳台阶(java实现)
- 数字问题之斐波那契数列全解<Java实现>
- 经典线程同步问题(生产者&消费者)--Java实现
- 面试题之青蛙变态跳台阶问题
- java实现一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
- Java Thread&Concurrency(10): 深入理解ThreadLocal及其实现原理
- Java实现青蛙跳台阶
- 关于微软面试题:"四人过桥"问题的思考——“n人过桥”问题的演进(Java实现)
- 递归算法——Hanoi(汉诺)问题(Java实现&C语言实现)
- 经典线程同步问题(生产者&消费者)--Java实现
- 数组问题之数组最值问题<Java实现>
- 链表问题之链表反转<Java实现>
- 斐波那契和青蛙跳台阶问题(Java)
- 链表问题之无头单链表删节点<Java实现>