用 Java 实现动态规划的方法如下:
定义状态:设 dp[i] 表示用了 i 个 1x1 的小正方形拼成的画布的不同方案数。
状态转移方程:可以用 I 型积木和 L 型积木拼接画布。
当用 I 型积木时,画布大小变为 2x(i-2),方案数为 dp[i-2]。
当用 L 型积木时,画布大小变为 2x(i-3),方案数为 dp[i-3]。
因此,状态转移方程为:
dp[i] = (dp[i-2] + dp[i-3]) % 1000000007;
初始化状态:dp[0] = 1,dp[1] = 0,dp[2] = 1。
边界条件:当 i = 0 或 i =