九度 1390 矩形覆蓋

2021-06-22 01:03:11 字數 911 閱讀 7078

本題我用兩種方法寫了一下,一種是狀態壓縮,另一種是很簡單的斐波那契數,規律其實很簡單:

不妨設f(n)為:n時的鋪設方式數目,則:

(1)如果第n行是豎著放時,那麼它影響到倒數第二行的放置且只有一種情況,即這兩列都是豎著放置,佔據倒數第二行和最後一行,則剩餘n-2行有f(n-2)種;

(2)如果第n行是橫著放置時,那麼它只影響到本行,且只能橫著放,那麼剩餘n-1行有f(n-1)種情況;

則:f(n) = f(n-1) + f(n-2),其中f(1) = 1, f(2) = 2;

#include #include #include using namespace std;

typedef long long ll;

ll dp[71];

void pre_slove()

int main()

狀態壓縮方法:

可以參考:

#include #include #include using namespace std;

typedef long long ll;

int i, n;

ll dp[71][4];

void dfs(int j, int icurstate, int iprestate)

if(j + 1 <= 2)

if(j + 2 <= 2)

dfs(j+2, icurstate<<2|3, iprestate<<2|3);

}int main()

return 0;

}

題目1390 矩形覆蓋

題目描述 我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?輸入 輸入可能包含多個測試樣例,對於每個測試案例,輸入包括乙個整數n 1 n 70 其中n為偶數。輸出 對應每個測試案例,輸出用n個2 1的小矩形無重疊地覆蓋乙個...

矩形覆蓋問題

問題描述 用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。現在問用8個2 1的小矩形無重疊地覆蓋乙個2 8的大矩形,總共有多少種方法?矩形如下 分析 我們可以把2 8的覆蓋方法記為f 8 用第乙個1 2的矩形去覆蓋大矩形的最左邊時有兩個選擇,豎著放或橫著放。如果豎著放,那麼右邊還剩2 7的矩形區域,這...

58 矩形覆蓋

矩形覆蓋 我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?斐波那契數列 2 n的大矩形,和n個2 1的小矩形 其中target 2為大矩陣的大小 有以下幾種情形 1 target 0 大矩形為 2 0,直接return ...