專題三 第一題

2021-07-11 11:50:23 字數 1149 閱讀 9149

1.題目編號:1006

2.簡單題意:將數塔從頂層走到底層,每步只能走相鄰的結點,求經過的結點的數字之和最大是多少。

3.解題思路形成過程:在周天的時候剛剛學了動態規劃,而且老師講的乙個題和這個特別像~最主要的是建立乙個遞推公式,通過觀察,從最下層開始將最大的找出來逐層向上加就能夠得到數字最大值和,公式為:f[i][j]=a[i][j]+max(f[i+1][j],f[i+1][j+1].

4.感悟:剛開始學,感覺有那麼點想法往動態規劃上靠攏,加油~

5.ac的**:

#include

using namespace std;

const int m=1000+5;

int f[m][m],a[m][m];

inline int max(int x,int y)

{  return x>c;

while(c--){

cin>>n;

for(i=1;i<=n;i++)

for(j=1;j<=i;j++)

cin>>a[i][j];

for(j=1;j<=n;j++)

f[n][j]=a[n][j];

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

for(j=1;j<=i;j++)

f[i][j]=a[i][j]+max(f[i+1][j],f[i+1][j+1]);

cout

在講述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



遞推遞迴專題 A第一題 母牛的故事

1 簡單描述 一開始有一頭母牛,母牛每年年初生乙隻小牛,每頭小母牛從第四年開始生小牛,第n年共有多少頭牛 2 思路 找遞推關係,第n年的牛數是第n 1年的牛加上新出生的牛,新出生的牛就是三年前生的小牛長大之後生的小牛數 f n f n 1 f n 3 includeusing namespace s...

滴滴第一題

方法 先求字首和,將pair 字首和的值,字首和標號i 加入multimap中,搜尋每一種字首和的lowerbound和upbound,計算兩者之差,與字首和為零的標號比較,取最大值。include include include includeusing namespace std define ...

杭電第一題

getchar的用法 首先getchar是在stdio.h中宣告一下才能用,所以標頭檔案中必須有stdio.h。他接收的是字元!他的操作原理 當編譯執行至getchar 時,使用者輸入了字元按下回車鍵後,他以回車鍵為開始標識,開始乙個乙個從stdio流中讀取字元,每次讀取字元後,getchar函式的...