剑指Offer:矩形覆盖N1
Posted mrsaver
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指Offer:矩形覆盖N1相关的知识,希望对你有一定的参考价值。
剑指Offer:矩形覆盖【N1】
题目描述
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
题目思考
我们先把2*8的覆盖方法记为f(8),用一个2*1的小矩形去覆盖大矩形的最右边时有两种选择,横着放或者竖着放,
此时左边的空间为f(6)或f(7),那么f(8)的放置结果为f(6)【右边横着放】+f(7)【右边竖着放】
找规律
f(n)=f(n-1)+f(n-2),斐波那契数列
Java题解
public class RectCover { public static int RectCover(int n) { if (n <= 2) return n; int[] dp = new int[n]; dp[0] = 1; dp[1] = 2; for (int i = 2; i < n; i++) dp[i] = dp[i - 1] + dp[i - 2]; return dp[n - 1]; } public static void main(String[] args) { System.out.println(RectCover(3)); } }
以上是关于剑指Offer:矩形覆盖N1的主要内容,如果未能解决你的问题,请参考以下文章