教室 3×n,磚塊 1×1 和 2×2。求鋪設方案數。n≤30。
設 `f[n]` 為 3×n 方案數。
考慮最右側列狀態,可推導:`f[n] = f[n-1] + 2*f[n-2]` (n≥3),
初始 `f[1]=1`, `f[2]=3`。
驗證:`f[3]=f[2]+2*f[1]=3+2=5` (符合樣例)。
#include
long long f[31];
int main() {
f[1]=1; f[2]=3;
for(int i=3;i<=30;i++) f[i]=f[i-1]+2*f[i-2];
int C,n; scanf("%d",&C);
while(C--) { scanf("%d",&n); printf("%lld\n",f[n]); }
return 0;
}