藍橋杯 數字三角形

2021-08-16 21:34:49 字數 743 閱讀 6033

題目大意:編寫程式計算從三角形頂部到底部的某處的一條路徑,使得該路徑所經過的數字的總和最大。

●每一步可沿左斜線向下或右斜線向下走;

●1<三角形行數≤100;

●三角形中的數字為整數0,1,…99;

題目分析:很好的一道動態規劃的例子。解題思路是自底向上分析,既然這條路徑能從頂部到底部,那麼從下往上看,也是等效的。我們設cost[i][j]表示包含第i行,第j列的數字的當前最大值。比如,從下往上看,cost[4][2]表示倒數第二行的7,那麼包含7的最大值只能是從它左下方的5->7,和右下方2->7之間取乙個較大值。一般地,我們自底向上,求到第i行cost[i][j]之後,繼續求第i-1行cost的值。得到: cost[i-1][j] = max(cost[i][j],cost[i][j+1]) + num[i-1][j]。也就是說,該值等於它自身的值num[i-1][j]加上從左下方或者右下方傳上來的較大的那個值。

值得注意的地方是:cost[i][j]陣列要明確初始化為0,不然最後一組樣例通不過。

**展示:

#include #include using namespace std;

int main()

}for(int i=n;i>=1;i--)

}cout<

return 0;

}

藍橋杯 數字三角形

問題描述 圖 示出了乙個數字三角形。請編乙個程式計算從頂至底的某處的一條路 徑,使該路徑所經過的數字的總和最大。每一步可沿左斜線向下或右斜線向下走 1 三角形行數 100 三角形中的數字為整數0,1,99 輸入格式 檔案中首先讀到的是三角形的行數。接下來描述整個三角形 輸出格式 最大總和 整數 樣例...

python藍橋杯數字三角形

回溯法求數字三角形 從三角形的頂部到底部有很多條不同的路徑。對於每條路徑,把路徑上面的數加起來可以得到乙個和,你的任務就是找到最 大的和。路徑上的每一步只能從乙個數走到下一層和它最近的左邊的那個數或者右邊的那個數。此外,向左下走的次數與向右下走的次數相差不能超過 1。輸入格式 輸入的第一行包含乙個整...

藍橋杯 數字三角形 簡單DP

演算法訓練 數字三角形 時間限制 1.0s 記憶體限制 256.0mb 問題描述 圖 示出了乙個數字三角形。請編乙個程式計算從頂至底的某處的一條路 徑,使該路徑所經過的數字的總和最大。每一步可沿左斜線向下或右斜線向下走 1 三角形行數 100 三角形中的數字為整數0,1,99 圖 輸入格式 檔案中首...