1. 程式人生 > >HDU 2084 數塔問題

HDU 2084 數塔問題

DP演算法的經典例子

數塔問題

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

#include<stdio.h>
#include<iostream>
using namespace std;
int max(int a,int b)
{
return a=a>b?a:b;


}
int main()
{
int T,n,i,j;
int a[100][100];
cin>>T;
while(T--)
{
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{
scanf("%d",&a[i][j]);
}
}


for(i=n-1;i>=0;i--)
{
for(j=0;j<i;j++)
{
         a[i-1][j]=max(a[i-1][j]+a[i][j],a[i-1][j]+a[i][j+1]);
}

}
printf("%d\n",a[0][0]);
}


return 0;
}


相關推薦

HDU 2084 簡單動態規劃

動態 src 2-2 code .cn clas return 技術分享 space 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 題目大意:有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的

hdu 2084 dp 動態規劃

lan 必須 次循環 AC 如果 sin set main turn 開始動態規劃的學習了,先是比較基礎的,很金典的數塔。附上題目鏈接 http://acm.hdu.edu.cn/showproblem.php?pid=2084 這題的狀態轉移方程是 dp[i][

[遞推簡單dp]-hdu 2084

[遞推簡單dp]-hdu 2084 數塔 標籤: ACM 題意: 在講述DP演算法的時候,一個經典的例子就是數塔問題,它是這樣描述的: 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少? 已經告訴你了,這是個

hdu--2084 (dp類題目)

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=2084 題意:我最開始以為是搜尋,想從下往上推,結果明顯不行(方案太多了),暴力肯定也是行不通的,所以千思萬想應該從下往上推。 核心方程:a[i][j]=max(a[i][j]+a[i

hdu 2084 (dp)

很簡單的dp問題。 以下附上ac程式碼 #include<iostream> #include<cmath> #include<cstring> # define max(a,b) ((a)>(b)?(a):(b))//

hdu 2084 (DP)

Problem Description 在講述DP演算法的時候,一個經典的例子就是數塔問題,它是這樣描述的: 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少? 已經告訴你了,這是個DP的題目,你能AC嗎? Input

HUD 1257 最少攔截系統 / HDU 2084 (DP)

這個星期進入DP專題。 先是基本概念。。(摘抄課件,我自重= =) 動態規劃(Dynamic Programming, DP)是解決某一類問題的一種方法,是分析問題的一種途徑,而不是一種特殊演算法(如線性規劃是一種演算法)。因此,在學習動態規劃時,除了對基本概念和方法正確地理解外,應以豐富的想象力去建

HDU 2084 問題(動態規劃入門)

Description 在講述DP演算法的時候,一個經典的例子就是數塔問題,它是這樣描述的:  有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?  已經告訴你了,這是個DP的題目,你能AC嗎? Input 輸入資

hdu 2084問題

數塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 20246    Accepted Submission(

HDU 2084 問題

DP演算法的經典例子 數塔問題 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少? #include<stdio.h> #include<iostream> using namespace std

HDU 2084 dp

數塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 43433    Accepted Submissio

Hdoj 2084. 題解

Problem Description 在講述DP演算法的時候,一個經典的例子就是數塔問題,它是這樣描述的: 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少? 已經告訴你了,這是個DP的題目,你能AC嗎? Input 輸入資料首先包括一個整數C,表示

【杭電100題】【DP_動態規劃】2084

Problem Description 在講述DP演算法的時候,一個經典的例子就是數塔問題,它是這樣描述的: 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少? 已經告訴你了,這是個DP的題目,你能AC嗎? Input 輸入資料首先包括一

hd 2084 (dp)

 原題連結 #include<stdio.h> int main() { int a[110][110],t,n,i,j; while(scanf("%d",&t)!=EOF) { while(t--) {

hdoj——2084

在講述DP演算法的時候,一個經典的例子就是數塔問題,它是這樣描述的: 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少? 已經告訴你了,這是個DP的題目,你能AC嗎? Input 輸入資料首先包括一個

2084 (dp入門)

數塔 Description 在講述DP演算法的時候,一個經典的例子就是數塔問題,它是這樣描述的:  有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和

問題-hdu-2084(dp)

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=2084 思路:要求從頂到底的最大值,可以反過來考慮,從底部向上。 只有下面一行的最大值確定,這一行的最大值才能確定。 #include<iostream> #include<cstdi

HDU 2084——(動態規劃)

思路:從上往下推,數越來越多,結果狀態太多,不好處理;則由下往上推,越往上數越少,最終歸於一個數。 狀態方程:dp[i][j] = max(dp[i+1][j], dp[i+1][j+1])+a[i][j]; C++程式碼實現: #include<stdio.

Re0:DP學習之路 HDU - 2084(基礎遞推)

解法 首先是輸入的問題,輸入的時候還要注意每一層都有多少個 然後是怎麼求解,一般求解首先要考慮順序,是正序還是倒序 如果這個題是正序的話那麼最終還需要將最後一行進行一次找max的運算 如果是倒序的話那麼最終歸於同一個起點,直接進行輸出即可 轉移方程 轉移方程考慮把問題分散化,分散成小的問題,其中這

動態規劃:問題 hdu 2084 dp

帶備忘錄的自頂向下: #include<iostream> #include<cstring> using namespace std; int tower[101][101