小hi和小ho在經歷了螃蟹先生的任務之後被獎勵了一次出國旅遊的機會,於是他們來到了大洋彼岸的美國。美國人民的生活非常有意思,經常會有形形色色、奇奇怪怪的活動舉辦,這不,小hi和小ho剛剛下飛機,就趕上了當地的迷宮節活動。迷宮節裡展覽出來的迷宮都特別的有意思,但是小ho卻相中了乙個其實並不怎麼像迷宮的迷宮——因為這個迷宮的獎勵非常豐富~
於是小ho找到了小hi,讓小hi幫助他獲取盡可能多的獎品,小hi把手一伸道:「迷宮的介紹拿來!」
小ho選擇的迷宮是乙個被稱為「數字三角形」的n(n不超過200)層迷宮,這個迷宮的第i層有i個房間,分別編號為1..i。除去最後一層的房間,每乙個房間都會有一些通往下一層的房間的樓梯,用符號來表示的話,就是從第i層的編號為j的房間出發會有兩條路,一條通向第i+1層的編號為j的房間,另一條會通向第i+1層的編號為j+1的房間,而最後一層的所有房間都只有一條離開迷宮的道路。這樣的道路都是單向的,也就是說當沿著這些道路前往下一層的房間或者離開迷宮之後,小ho沒有辦法再次回到這個房間。迷宮裡同時只會有乙個參與者,而在每個參與者進入這個迷宮的時候,每個房間裡都會生成一定數量的獎券,這些獎券可以在通過迷宮之後兌換各種獎品。小ho的起點在第1層的編號為1的房間,現在小ho悄悄向其他參與者弄清楚了每個房間裡的獎券數量,希望小hi幫他計算出他最多能獲得多少獎券。
提示一:盲目貪心不可取,搜尋計算太耗時
提示二:記憶深搜逞神威,寬度優先解難題
提示三:總結歸納提公式,減少冗餘是真理
每個測試點(輸入檔案)有且僅有一組測試資料。
每組測試資料的第一行為乙個正整數n,表示這個迷宮的層數。
接下來的n行描述這個迷宮中每個房間的獎券數,其中第i行的第j個數代表著迷宮第i層的編號為j的房間中的獎券數量。
測試資料保證,有100%的資料滿足n不超過100
對於100%的資料,迷宮的層數n不超過100
對於100%的資料,每個房間中的獎券數不超過1000
對於50%的資料,迷宮的層數不超過15(小ho表示2^15才3萬多呢,也就是說……)
對於10%的資料,迷宮的層數不超過1(小hi很好奇你的邊界情況處理的如何?~)
對於10%的資料,迷宮的構造滿足:對於90%以上的結點,左邊道路通向的房間中的獎券數比右邊道路通向的房間中的獎券數要多。
對於10%的資料,迷宮的構造滿足:對於90%以上的結點,左邊道路通向的房間中的獎券數比右邊道路通向的房間中的獎券數要少。
對於每組測試資料,輸出乙個整數ans,表示小ho可以獲得的最多獎券數。
樣例輸入
526 4
1 2 8
4 0 9 6
6 5 5 3 6
樣例輸出
28
**:(動態規劃儲存三角形中到達每個位置所能獲得的最大價值)
#includeusing namespace std;
int main()
} best[0][0] = reward[0][0];
for(int i = 1;i < n; i++) }
int max = 0;
for(int i = 0; i < n; i++)
cout << max << endl;
return 0;
}
hihocoder 1037 數字三角形
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 問題描述 小hi和小ho在經歷了螃蟹先生的任務之後被獎勵了一次出國旅遊的機會,於是他們來到了大洋彼岸的美國。美國人民的生活非常有意思,經常會有形形色色 奇奇怪怪的活動舉辦,這不,小hi和小ho剛剛下飛機,就趕上了當地的迷宮節活...
hihoCoder 1037 數字三角形
題目 樣例輸入 5 迷宮的層數 26 4 1 2 8 4 0 9 6 6 5 5 3 6 結果 28 思路 動態規劃 maze i,j max maze i 1,j maze i 1,j 1 原始碼 1 include 2 using namespace std 34 static int maze...
數字三角形
題目描述 示出了乙個數字三角形。請編乙個程式計算從頂至底的某處的一條路 徑,使該路徑所經過的數字的總和最大。每一步可沿左斜線向下或右斜線向下走 1 三角形行數 25 三角形中的數字為整數 1000 輸入第一行為n,表示有n行 後面n行表示三角形每條路的路徑權 輸出路徑所經過的數字的總和最大的答案 樣...