一 狀態壓縮dp(1)多公尺諾骨牌

2021-07-03 19:24:57 字數 1125 閱讀 8541

1、 多公尺諾骨牌(dominoes

【問題描述】

有多少種方法可以在乙個

3*n的矩形中平鋪乙個

2*1

的多公尺諾骨牌?

下圖給出了乙個

3*12

的矩形中乙個平鋪的樣例。

【輸入格式】

輸入包含若干測試用例,以包含-1 的一行結束。每個測試用例包含乙個整數0<=n<=30。

【輸出格式】

對每個測試用例,輸出乙個整數,給出可能的平鋪數。

【輸入樣例】

2812

-1【輸出樣例】

3153

2131

【輸入格式】

輸入包含若干測試用例,以包含-1 的一行結束。每個測試用例包含乙個整數0<=n<=30。

【輸出格式】

對每個測試用例,輸出乙個整數,給出可能的平鋪數。

【輸入樣例】

2812

-1【輸出樣例】

3153

2131

**:

varf:array [1..100] of qword;

i,j,m,n,ans:longint;

begin

assign(input,'dominoes.in');

assign(output,'dominoes.out');

reset(input);

rewrite(output);

readln(n);

while n<>-1 do

begin

fillchar(f,sizeof(f),0);

if n mod 2=1 then writeln('0') else

begin

f[1]:=1;

f[2]:=3;

f[3]:=11;

for i:=4 to 20 do

f[i]:=4*f[i-1]-f[i-2];

writeln(f[(n+2) div 2]);

end;

readln(n);

end;

close(input);

close(output);

end.

多公尺諾骨牌問題,狀態壓縮dp

題目描述 用1 2 的矩形通過組合拼成大矩形,求拼成指定的大矩形有幾種拼法。首先 我們先求用1 2 的矩形拼成 n m的矩形有多少種拼法 當n m為奇數時,一定是不會拼出來的,因為想要拼出來就需要整數倍的小矩形數目。為了加速演算法,要把m,n中小的那個當做列 分兩個步驟 1 先求出相鄰兩行的轉化關係...

P1282 多公尺諾骨牌 DP

多公尺諾骨牌有上下2個方塊組成,每個方塊中有1 6個點。現有排成行的 上方塊中點數之和記為s1,下方塊中點數之和記為s2,它們的差為 s1 s2 例如在圖8 1中,s1 6 1 1 1 9,s2 1 5 3 2 11,s1 s2 2。每個多公尺諾骨牌可以旋轉180 使得上下兩個方塊互換位置。程式設計...

P1282 多公尺諾骨牌 DP

題目大意 題解當知道 總和 及 單行的和 就可以算出差值的大小 1 2 3 4 單行和l 10 8 7 6 5 總和s 36 則上下行的差值為 l s l include define inf 0x3f3f3f3f using namespace std int n,a 1005 b 1005 dp...