雙塔問題題解

2021-10-25 18:06:45 字數 2464 閱讀 6163

題目描述:

2023年9月11日,一場突發的災難將紐約世界**中心大廈夷為平地,mr. f曾親眼目睹了這次災難。為了紀念"9?11"事件,mr. f決定自己用水晶來搭建一座雙塔。 mr. f有n塊水晶,每塊水晶有乙個高度,他想用這n塊水晶搭建兩座有同樣高度的塔,使他們成為一座雙塔,mr. f可以從這n塊水晶中任取m(1≤m≤n)塊來搭建。但是他不知道能否使兩座塔有同樣的高度,也不知道如果能搭建成一座雙塔,這座雙塔的最大高度是多少。所以他來請你幫忙。 給定水晶的數量n(1≤n≤100)和每塊水晶的高度hi(n塊水晶高度的總和不超過2000),你的任務是判斷mr. f能否用這些水晶搭建成一座雙塔(兩座塔有同樣的高度),如果能,則輸出所能搭建的雙塔的最大高度,否則輸出"impossible"。

輸入格式

輸入的第一行為乙個數n,表示水晶的數量。第二行為n個數,第i個數表示第i個水晶的高度。

輸出格式

輸出僅包含一行,如果能搭成一座雙塔,則輸出雙塔的最大高度,否則輸出乙個字串"impossible"。

輸入:

513

452

輸出:

7
思路:設dp[

i][j

]dp[i][j]

dp[i][

j]表示前i個高度差為j的矮塔的高度

若第i

ii個塔不取,則dp[

i][j

]=dp

[i−1

][j]

dp[i][j] = dp[i-1][j]

dp[i][

j]=d

p[i−

1][j

];若第i

ii個塔取

放在矮塔上但矮塔還是矮塔. dp[

i][j

]=ma

x(dp

[i][

j],d

p[i−

1][j

+h[i

]]+h

[i])

;dp[i][j] = max(dp[i][j], dp[i-1][j+h[i]] + h[i]);

dp[i][

j]=m

ax(d

p[i]

[j],

dp[i

−1][

j+h[

i]]+

h[i]

);放在矮塔上但矮塔變為高塔. dp[

i][j

]=ma

x(dp

[i][

j],d

p[i−

1][h

[i]−

j]+h

[i]−

j)h[

i]

>=j

dp[i][j] = max(dp[i][j], dp[i-1][h[i]-j] + h[i]-j) \text \text \text \text \text \text \text \texth[i]>=j

dp[i][

j]=m

ax(d

p[i]

[j],

dp[i

−1][

h[i]

−j]+

h[i]

−j)h

[i]>=j

放在高塔上,dp[

i][j

]=ma

x(dp

[i][

j],d

p[i−

1][j

−h[i

]])j

>=h

[i

]dp[i][j] = max(dp[i][j], dp[i-1][j-h[i]])\text \text \text \text \text \text \text \textj>=h[i]

dp[i][

j]=m

ax(d

p[i]

[j],

dp[i

−1][

j−h[

i]])

j>=h

[i]

#include

using

namespace std;

#define maxn 105

#define maxm 2005

int h[maxn]

, dp[maxn]

[maxm]

;int

main()

}int ans = dp[n][0

];if(ans !=0)

cout << dp[n][0

]<< endl;

else

puts

("impossible");

return0;

}

完結撒花★,°:.☆( ̄▽ ̄)/$:.°★ 。

題解 Hanoi 雙塔問題

給定 a b c 三根足夠長的細柱,在 a 柱上放有 2n 個中間有孔的圓盤,共有 n 個不同的尺寸,每個尺寸都有兩個相同的圓盤,注意這兩個圓盤是不加區分的。現要將這些圓盤移到 c 柱上,在移動過程中可放在 b 柱上暫存。要求 每次只能移動乙個圓盤 a b c 三根細柱上的圓盤都要保持上小下大的順序...

SSL ZYC Hanoi雙塔問題

題目大意 給定a,b,c三根足夠長的細柱,在a柱上放有2n個中間有空的圓盤,共有n個不同的尺寸,每個尺寸都有兩個相同的圓盤,注意這兩個圓盤是不加區分的 下圖為n 3的情形 現要將 這些國盤移到c柱上,在移動過程中可放在b柱上暫存。要求 1 每次只能移動乙個圓盤 2 a b c三根細柱上的圓盤都要保持...

Hanoi 雙塔問題

operatorname luogup 1096 給定 a aa b bb c cc 三根足夠長的細柱,在 a aa 柱上放有 2n2n 2n個中間有孔的圓盤,共有 n nn 個不同的尺寸,每個尺寸都有兩個相同的圓盤,注意這兩個圓盤是不加區分的 下圖為 n 3 n 3n 3 的情形 現要將這些圓盤移...