首页 > 代码库 > HRBUST 1200 装修

HRBUST 1200 装修

$dp$。

$dp[i]$记录铺满$3*i$的方案数。最后两列铺了$1$个$2*2$的和两个$1*1$的,或者是最后$1$列铺了$3$个$1*1$的。

因此$dp[i]=dp[i-1]+dp[i-2]*2$

#include<cstdio>#include<cstring>#include<cmath>#include<vector>#include<map>#include<set>#include<queue>#include<stack>#include<algorithm>#include<iostream>using namespace std;int T,n,dp[50];int main(){    dp[1]=1;    dp[2]=3;    for(int i=3;i<=30;i++)    {        dp[i]=2*dp[i-2]+dp[i-1];    }    scanf("%d",&T);    while(T--)    {        scanf("%d",&n);        printf("%d\n",dp[n]);    }    return 0;}

 

HRBUST 1200 装修