首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

HDU 重建希望小學:3×n 地磚鋪設方案數 (線性遞推)

     編輯:程式設計疑難解答

題目模型

教室 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;
}

參考

queuelovestack 詳細推導

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved