考慮在下面被顯示的數字金字塔。
寫乙個程式來計算從最高點開始在底部任意處結束的路徑經過數字的和的最大。
每一步可以走到左下方的點也可以到達右下方的點。
73 8
8 1 0
2 7 4 4
4 5 2 6 5
在上面的樣例中,從7 到 3 到 8 到 7 到 5 的路徑產生了最大和:30
第乙個行包含 r(1<= r<=1000),表示行的數目。
後面每行為這個數字金字塔特定行包含的整數。
所有的被**的整數是非負的且不大於100。
單獨的一行包含那個可能得到的最大的和。示例1
複製
573 8
8 1 0
2 7 4 4
4 5 2 6 5
複製
30123dp的第一步,把狀態設計出來。
本題可以這樣設計狀態:
f(x,y)表示:走到(x,y)位置,能獲得的最大收益
接下來建立各狀態的聯絡
要麼從左上角走過來,要麼從右上角走過來。所以我們可以得出核心公式:
f(x,y)=w(x,y)+max(f(x-1,y-1),f(x-1,y))
4567
891011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
#include
using
namespace
std;
const
int
n=1010;
int
dp[n][n],w[n][n];
int
main()
}
for
(
int
i=1;i<=r;i++)
}
int
ans=-1;
for
(
int
i=1;i<=r;i++)
cout<
return
0;
}
for(int i=0;i<=r;i++)}
我們還可以正著寫。(用數去更新)
字母金字塔(類同數字金字塔)
問題描述 讓程式要求使用者輸入乙個大寫字母,使用巢狀迴圈產生像下面這樣的金字塔圖案 aaba abcba abcdba abcdecba 演算法分析 每行包括三個部分內容 若干個空格 正序排列的字母 倒序排列的字幕。使用乙個外部迴圈來處理行,在每乙個行中使用三個內部迴圈 乙個處理空格,乙個以公升序列...
數字金字塔
觀察下面的數字金字塔。寫乙個程式來查詢從最高點到底部任意處結束的路徑,使路徑經過數字的和最大。每一步可以走到左下方的點也可以到達右下方的點。7 3 8 8 1 0 2 7 4 4 4 5 2 6 5在上面的樣例中,從7 到 3 到 8 到 7 到 5 的路徑產生了最大 多組輸入資料 第乙個行包含 r...
數字金字塔
題目 題目描述 觀察下面的數字金字塔。寫乙個程式來查詢從最高點到底部任意處結束的路徑,使路徑經過數字的和最大。每一步可以走到左下方的點也可以到達右下方的點。7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 在上面的樣例中,從7 到 3 到 8 到 7 到 5 的路徑產生了最大 輸入輸出格式...