計蒜客CS109DP習題 撿水果

2021-07-31 08:36:27 字數 1087 閱讀 9046

蒜頭在玩一款遊戲,他在乙個山頂,現在他要下山,山上有許多水果,蒜頭每下乙個高度就可以撿起乙個水果,並且獲得水果的能量。

山的形狀如圖所示:

3

1 2

6 2 3

3 5 4 1

這是乙個高度為 4

4 的山,數字代表水果的能量。每次下乙個高度,蒜頭需要選擇是往左下走,還是往右下走。例如:對於上圖的情況,蒜頭能獲得的最大能量為,3 + 1 + 6 + 5 = 153+

1+6+

5=15

。現在,蒜頭希望你能幫他計算出下山能獲得的最大能量。

第一行輸入乙個 n

n,代表山的高度。(1 < n <= 1000

1<

n<=1

000)接下來 n 行,第 i+1i+

1 行有 i

i 個數字,代表水果的能量,水果能量為正整數且不大於 100010

00。輸出乙個數字,代表下山一共獲得的最大能量,佔一行。

樣例輸入

4

31 2

6 2 3

3 5 4 1

樣例輸出

15

首先用dfs的思想過一遍,從上往下遍歷,每層dfs向下遞迴有兩種情況。需要傳遞和維護的是行列,以及上一層的最大能量結果。即

dfs(s_ij,i,j)

現在換用遞推的方式實現,從最上層往下迴圈即可,很簡單。核心**如下。

for(int i=1;i<=n;i++)}

附上源程式**:

#includeusing namespace std;

int nengliang[1007][1007];

long long dp[1007][1007];

int main(void)

} for(int i=1;i<=n;i++)

} long long sum=0;

for(int i=1;i<=n;i++)

cout<

計蒜客習題 撿水果

3 1 26 2 3 3 5 4 1這是乙個高度為 4 的山,數字代表水果的能量。每次下乙個高度,蒜頭需要選擇是往左下走,還是往右下走。例如 對於上圖的情況,蒜頭能獲得的最大能量為,3 1 6 5 15。現在,蒜頭希望你能幫他計算出下山能獲得的最大能量。輸入格式 第一行輸入乙個 n,代表山的高度。1...

計蒜客 撿水果 DP

題目描述 蒜頭在玩一款遊戲,他在乙個山頂,現在他要下山,山上有許多水果,蒜頭每下乙個高度就可以撿起乙個水果,並且獲得水果的能量。山的形狀如圖所示 31 2 6 2 3 3 5 4 11234 這是乙個高度為 4 的山,數字代表水果的能量。每次下乙個高度,蒜頭需要選擇是往左下走,還是往右下走。例如 對...

計蒜客CS109習題DP 牆壁塗色

蒜頭君覺得白色的牆面好單調,他決定給房間的牆面塗上顏色。他買了 3 3 種顏料分別是紅 黃 藍,然後把房間的牆壁豎直地劃分成 n n 個部分,蒜頭希望每個相鄰的部分顏色不能相同。他想知道一共有多少種給房間上色的方案。例如,當 n 5n 5 時,下面就是一種合法方案。由於牆壁是乙個環形,所以下面這個方...