3水塔問題

2021-07-11 14:03:21 字數 841 閱讀 9965

在講述dp演算法的時候,乙個經典的例子就是數塔問題,它是這樣描述的:

有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?

已經告訴你了,這是個dp的題目,你能ac嗎?

input

輸入資料首先包括乙個整數c,表示測試例項的個數,每個測試例項的第一行是乙個整數n(1 <= n <= 100),表示數塔的高度,接下來用n行數字表示數塔,其中第i行有個i個整數,且所有的整數均在區間[0,99]內。

output

對於每個測試例項,輸出可能得到的最大和,每個例項的輸出佔一行。

sample input

157

3 88 1 0

2 7 4 4

4 5 2 6 5

sample output

30

思路:動態規劃,從上到下開始尋找

採用動態規劃,從下往上遍歷:從下往上推,乙個位元組位元組的推導,從倒數第二排開始,每乙個位置是與他相鄰位置的最大值,

一直推導到矩陣的頭部,值就是最大值。

其中 每個節點都是相加和的最大值,區域性最大值一直到總體最大值。

看下面**

#includeusing namespace std;

int dp[1001][1001];

int f(int a,int b)

int main()

}for(int i=m-1;i>=0;--i)

}cout<

DGZX1564 水塔水位

先將高度值離散,對映到小範圍,然後統計每個高度到下乙個高度之間的總容積,最後從下到上不斷模擬 填水 的過程。include include using namespace std const int maxn 50001 int n,v double lev int b 2 maxn h maxn ...

3 螞蟻問題

有一根27厘公尺的細木桿,在第3厘公尺 7厘公尺 11厘公尺 17厘公尺 23厘公尺這五個位置上各有乙隻螞蟻。木桿很細,不能同時通過乙隻螞蟻。開始時,螞蟻的頭朝左還是朝右是任意的,它們只會朝前走或調頭,但不會後退。當任意兩隻螞蟻碰頭時,兩隻螞蟻會同時調頭朝反方向走。假設螞蟻們每秒鐘可以走一厘公尺的距...

SQl優化問題3

優化儲存過程有很多種方法,下面介紹最常用的7種。1.使用set nocount on選項 我們使用select語句時,除了返回對應的結果集外,還會返回相應的影響行數。使用set nocount on後,除了資料集就不會返回額外的資訊了,減小網路流量。2.使用確定的schema 在使用表,儲存過程,函...