原題鏈結
觀察下面的數字金字塔。寫乙個程式查詢從最高點到底部任意處結束的路徑,使路徑經過數字的和最大。每一步可以從當前點走到左下方的點也可以到達右下方的點。
在上面的樣例中,從13
'>13
13到8
'>8
8到26
'>26
26到15
'>15
15到24
'>24
24的路徑產生了最大的和86
'>86
86。第乙個行包含r(1
≤r≤1000
)'>r(1≤r≤1000)
r(1≤r≤1000),表示行的數目。
後面每行為這個數字金字塔特定行包含的整數。
所有的被**的整數是非負的且不大於100
'>100
100。
單獨的一行,包含那個可能得到的最大的和。
51311 8
12 7 26
6 14 15 8
12 7 13 24 11
86這道題用了動態規劃。最底下幾個數自身就是從他們開始的最大和,所以
for(int i=1;i<=n;i++) maxsum[n][i]=d[n][i];而其他每個數的最大和就等於下面和右下方的值取最大值再加上他本身
for(int i=n-1;i>=1;i--)最後輸出就行了。
ac**:
#includeusingnamespace
std;
long
long n,maxsum[1010][1010],d[1010][1010
];int
main()
for(int i=1;i<=n;i++) maxsum[n][i]=d[n][i];
for(int i=n-1;i>=1;i--)
cout
<1][1
];
return0;
}
一本通1258 例9 2 數字金字塔
原題傳送門 0.前言 顯然,這是一道動態規劃 dp 的入門題,也是一道非常經典的例題。1.思路 dp 和貪心主要就不同在 dp 求全域性最優解,貪心求區域性最優解 這道題顯然不是用貪心來做,因為當前的區域性最優解可以不是全域性最優解 solution 1 逆推 首先輸入乙個三角形樣的三角形 for ...
動態規劃2 例9 2數字金字塔
例9.2數字金字塔 觀察下面的數字金字塔。寫乙個程式查詢從最高點到底部任意處結束的路徑,使路徑經過數字的和最大。每一步可以從當前點走到左下方的點也可以到右下方的點方法一 從最高點按照規則走到最低點的路徑的最大的權值和,路徑起點終點固定,走法規則明確,可以考慮用搜尋演算法 定義遞迴函式 void df...
字母金字塔(類同數字金字塔)
問題描述 讓程式要求使用者輸入乙個大寫字母,使用巢狀迴圈產生像下面這樣的金字塔圖案 aaba abcba abcdba abcdecba 演算法分析 每行包括三個部分內容 若干個空格 正序排列的字母 倒序排列的字幕。使用乙個外部迴圈來處理行,在每乙個行中使用三個內部迴圈 乙個處理空格,乙個以公升序列...