题解 | #矩形覆盖#
矩形覆盖
https://www.nowcoder.com/practice/72a5a919508a4251859fb2cfb987a0e6
import java.util.*; public class Solution { public int rectCover(int target) { int n1 = 1; int n2 = 2; int nn = 0; for (int i = 3; i <= target; i++) { nn = n1 + n2; n1 = n2; n2 = nn; } if (target <= 2)return target; else return nn; } }
当 n 为 1 时,只有一种覆盖方法:
当 n 为 2 时,有两种覆盖方法:
要覆盖 2*n 的大矩形,可以先覆盖 2*1 的矩形,再覆盖 2*(n-1) 的矩形;或者先覆盖 2*2 的矩形,再覆盖 2*(n-2) 的矩形。而覆盖 2*(n-1) 和 2*(n-2) 的矩形可以看成子问题。该问题的递推公式如下: