假設有如下所示的乙個數字金字塔,現在,要求寫乙個程式來查詢從頂點到底部任意處結束的路徑,使路徑經過的數字的和最大,並輸出該路徑的最大和。比如以下金字塔的和最大路徑的和為7+3+8+7+5=30。
73 2
8 1 0
2 7 4 4
4 5 2 6 5
c++ code 12
3456
78910
1112
1314
1516
1718
1920
2122
2324
2526
2728
2930
3132
3334
3536
3738
3940
4142
4344
4546
4748
4950
5152
#include
#include
using
namespace
std;
const
intmaxlayer = 5;
// 金字塔的最大層數
/** @brief
* 計算金字塔中第layer層第pos個元素在陣列中的下標
** @param layer int 金字塔中第layer層
* @param pos int 金字塔中第layer層第pos個元素
* @return int**/
intindex(
intlayer,
intpos)
/** @brief
* 金字塔自上而下路徑中,路徑和的最大值
** @param pnums int* 儲存金字塔中的數字,這裡是一維陣列,按層次順序進行儲存
* @param layer int 金字塔中的第layer層[1, maxlayer]
* @param pos int 金字塔中第layer層的第pos([0, layer-1])個元素
* @return int 最大路徑和**/
intmaxpathsum(
int*pnums,
intlayer,
intpos)
/*** 第layer層的第pos個元素,只能向第layer+1層的第pos或第pos+1個元素走
*/return
max(maxpathsum(pnums, layer +
1, pos +
0), maxpathsum(pnums, layer +
1, pos + 1))
+ pnums[index(layer, pos)];
}int
main()
;cout << maxpathsum(nums, 1,
0) << endl;
return0;
}說明:程式測試有限,不足還望指出。請不吝賜教!
字母金字塔(類同數字金字塔)
問題描述 讓程式要求使用者輸入乙個大寫字母,使用巢狀迴圈產生像下面這樣的金字塔圖案 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 的路徑產生了最大 輸入輸出格式...