在講述dp演算法的時候,乙個經典的例子就是數塔問題,它是這樣描述的:
有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?
已經告訴你了,這是個dp的題目,你能ac嗎?
input
輸入資料首先包括乙個整數c,表示測試例項的個數,每個測試例項的第一行是乙個整數n(1 <= n <= 100),表示數塔的高度,接下來用n行數字表示數塔,其中第i行有個i個整數,且所有的整數均在區間[0,99]內。
output
對於每個測試例項,輸出可能得到的最大和,每個例項的輸出佔一行。
sample input
157sample output3 88 1 0
2 7 4 4
4 5 2 6 5
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 在使用表,儲存過程,函...