小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可以獲得的最多獎券數。
樣例輸入
5樣例輸出26 4
1 2 8
4 0 9 6
6 5 5 3 6
28
題解:一道經典的動態規劃題,跟塔數問題很類似。
將樣例裡演示:
ac code:
#include using namespace std;
int earn[101][101];
int reward[101][101];
long max(long a, long b)
int main()
{ int n,i,j;
cin>>n;
for(i=0;i>reward[i][j];
earn[0][0] = reward[0][0];
for(i=1; i
題目 數字三角形
給定乙個數字三角形,找到從頂部到底部的最小路徑和。每一步可以移動到下面一行的 相鄰數字上。您在真實的面試中是否遇到過這個題?yes 哪家公司問你的這個題?樣例比如,給出下列數字三角形 2 3,4 6,5,7 4,1,8,3 從頂到底部的最小路徑和為11 2 3 5 1 11 注意如果你只用額外空間複...
數字三角形 1
不能傻傻的用普通遞迴 會超時,因為有大量的重複計算。需要改進,每個結果一旦算出來就存起來,下次需要用的時候就直接呼叫。改進成為記憶遞迴型動歸程式 include include using namespcae std define max 101 int d max max int n int ma...
題目 三角形
這是 挑戰程式設計競賽 上的一道題,前幾頁的,屬於簡單題,今天又重溫複習,看來自己是真的弱,居然又沒寫出來,中間卡殼了。原因是判定條件沒想出來。題目大意 有n跟棍子,第i跟的長度是ai,要從中挑出三根組成三角形,能組成的話輸出最大周長,不行的話輸出0.思路 三根棍子,組成三角形的充要條件是 兩邊長度...