time limit: 1000 ms memory limit: 32768 kib
problem description
在2×n的乙個長方形方格中,用乙個1× 2的骨牌鋪滿方格,輸入n ,輸出鋪放方案的總數. 例如n=3時,為2× 3方格,骨牌的鋪放方案有三種,如下圖:
輸入資料由多行組成,每行包含乙個整數n,表示該測試例項的長方形方格的規格是2×n (0< n<=50)。
output
對於每個測試例項,請輸出鋪放方案的總數,每個例項的輸出佔一行。
sample input
1sample output32
132
演算法思路: 分治演算法核心就是縮小問題規模,一般有兩種縮小思路:二分法/遞減法,顯然這個問題採用"遞減法"比較好。
推算如上圖,現在假設需要計算第n個,即把n-1時再新增"乙個豎著的情況"(因為第n-1個我們把各種情況計算出來了,所以無需操心);但是我們缺少橫著的情況,那麼再往前推n-2個,再新增乙個"橫著的情況"。
因此得到遞推演算法 func(n)=func(n-1)+func(n-2)。
至於放在左右問題,因為之前n-1與n-2滿足所有情況,左右無關緊要,算作一種(對稱)。
源**:
1//演算法.cpp : 此檔案包含 "main" 函式。程式執行將在此處開始並結束。2//
34 #include "
pch.h
"5 #include 6 #include 7 #include 8 #include 9
using
namespace
std;
1011
12int
main()
24 printf("
%lld\n
", num[n]);25}
26 }
骨牌鋪方格 分治演算法
在2 n的乙個長方形方格中,用乙個1 2的骨牌鋪滿方格,輸入n 輸出鋪放方案的總數。例如n 3時,為2 3方格,骨牌的鋪放方案有三種,如下圖 輸入包含乙個整數n,表示該測試例項的長方形方格的規格是2 n 0sample input 3sample output 3f 0 0,沒有地方擺骨牌,所以為0...
骨牌鋪方格
time limit 1 sec memory limit 128 mb submit 43 solved 12 submit status web board 在2 n的乙個長方形方格中,用乙個1 2的骨牌鋪滿方格,輸入n 輸出鋪放方案的總數.例如n 3時,為2 3方格,骨牌的鋪放方案有三種,如下...
骨牌鋪方格
problem description 在2 n的乙個長方形方格中,用乙個1 2的骨牌鋪滿方格,輸入n 輸出鋪放方案的總數.例如n 3時,為2 3方格,骨牌的鋪放方案有三種,如下圖 input 輸入資料由多行組成,每行包含乙個整數n,表示該測試例項的長方形方格的規格是2 n 0 n 50 outpu...