題目思路: 從上往下狀態太多不好處理,那麼我們就從下往上遞推,每一層少乙個狀態。
設乙個一維陣列dp 初始狀態存最下面的那一行
即
第五行dp[1]=4,dp[2]=5,dp[3]=2,dp[4]=6,dp[5]=5
往上遞推一層 轉移方程為 dp[j]=max(dp[j],dp[j+1])+a[i][j];
那麼對於第4行
dp[1]=max(4,5)+2=7;同理
dp[2]=max(5,2)+7=12;
...
ac**:
/*
2023年9月17日10:43:41
hdu2084
ac */
#include #include #include #include #include #include #include #include #include #include using namespace std;
const int maxn=110;
int a[maxn][maxn];
int dp[maxn];
int main()
} memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)
for(int i=n-1;i>=1;i--)
} printf("%d\n",dp[1]);
/*test intput
for(int i=1;i<=n;i++)printf("\n");
} */
} return 0;
}
hdu2084動態規劃入門題 數塔
這個是動態規劃入門題,比較簡單。題意是 乙個數字組成的三角形,從上到下找一條路徑,使這條路徑上數字之和最大。解題思路,就是要從下往上看。舉個例子 如果你從上到下走到了第4行第1個數,也就是2,那麼接下來有兩個數可以走19和7,而你必然會選擇19。所以就可以根據這個思路更新上面一行的數。把2更新成2 ...
HDU 2084 數塔問題(動態規劃入門)
description 在講述dp演算法的時候,乙個經典的例子就是數塔問題,它是這樣描述的 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?已經告訴你了,這是個dp的題目,你能ac嗎?input 輸入資料首先包括乙個整數c,表示測試例項的個數,每個...
hdu 2084 數塔(動態規劃)
problem description 在講述dp演算法的時候,乙個經典的例子就是數塔問題,它是這樣描述的 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?已經告訴你了,這是個dp的題目,你能ac嗎?輸入資料首先包括乙個整數c,表示測試例項的個數,...