HDU 2084 數塔問題(動態規劃入門)
Description
在講述DP演算法的時候,一個經典的例子就是數塔問題,它是這樣描述的:
有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?
已經告訴你了,這是個DP的題目,你能AC嗎?
Input
輸入資料首先包括一個整數C,表示測試例項的個數,每個測試例項的第一行是一個整數N(1 <= N <= 100),表示數塔的高度,接下來用N行數字表示數塔,其中第i行有個i個整數,且所有的整數均在區間[0,99]內。
Output
對於每個測試例項,輸出可能得到的最大和,每個例項的輸出佔一行。
Sample Input
1 5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5
Sample Output
30
程式碼
#include<iostream> #include<cstring> #include<cmath> using namespace std; int tower[110][110]; int dp[110][110]; int n; //記憶化搜尋 int solve(int i,int j){ if(dp[i][j]>=0) return dp[i][j];//防止重複計算 return dp[i][j]=tower[i][j]+(i==n?0:max(solve(i+1,j),solve(i+1,j+1))); //dp的思路是這樣,當前的狀態的最優解加上子問題的最優解 //就這道題來說9到底層和最大的最優解是12或15到底層和最大的最優解 //以此往下走,走到底層後,返回最最最優解 } int main(){ int t; cin>>t; while(t--){ cin>>n; for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) cin>>tower[i][j]; memset(dp,-1,sizeof(dp));//每個節點上的數都>=0,所以用-1來判斷是否已經計算過 cout<<solve(1,1)<<endl; } 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][
hdu--2084 數塔(dp類題目)
題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=2084 題意:我最開始以為是搜尋,想從下往上推,結果明顯不行(方案太多了),暴力肯定也是行不通的,所以千思萬想應該從下往上推。 核心方程:a[i][j]=max(a[i][j]+a[i
HDU 2084 數塔問題(動態規劃入門)
Description 在講述DP演算法的時候,一個經典的例子就是數塔問題,它是這樣描述的: 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少? 已經告訴你了,這是個DP的題目,你能AC嗎? Input 輸入資
hdu 2084 數塔 (dp)
很簡單的dp問題。 以下附上ac程式碼 #include<iostream> #include<cmath> #include<cstring> # define max(a,b) ((a)>(b)?(a):(b))//
(HDOJ)數塔(動態規劃)
Problem Description 在講述DP演算法的時候,一個經典的例子就是數塔問題,它是這樣描述的: 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少? 已經告訴你了,這是個DP的題目,你能AC嗎? Input
hdoj problem2084 數塔(動態規劃)
數塔 http://acm.hdu.edu.cn/showproblem.php?pid=2084 Time Limit: 1000/1000 MS (Java/Others) Memory L
HDU——1176 免費餡餅(動態規劃 類似數塔問題)
Problem Description 都說天上不會掉餡餅,但有一天gameboy正走在回家的小徑上,忽然天上掉下大把大把的餡餅。說來gameboy的人品實在是太好了,這餡餅別處都不掉,就掉落在他身旁的10米範圍內。餡餅如果掉在了地上當然就不能吃了,所以gam
2084 數塔(dp入門)
數塔 Description 在講述DP演算法的時候,一個經典的例子就是數塔問題,它是這樣描述的: 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和
數組中最長的升序子序列(動態規劃問題)
ace dia mic enc namespace 進行 strong main log The longest Increasing Subsequence (LIS) 給定一個序列,找到這個序列的一個最長的子序列,使得子序列的所有元素是升序的,且元素之間的相對位置不變
[遞推簡單dp]-hdu 2084 數塔
[遞推簡單dp]-hdu 2084 數塔 標籤: ACM 題意: 在講述DP演算法的時候,一個經典的例子就是數塔問題,它是這樣描述的: 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少? 已經告訴你了,這是個
hdu 2084 數塔(DP)
Problem Description 在講述DP演算法的時候,一個經典的例子就是數塔問題,它是這樣描述的: 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少? 已經告訴你了,這是個DP的題目,你能AC嗎? Input
HUD 1257 最少攔截系統 / HDU 2084 數塔 (DP)
這個星期進入DP專題。 先是基本概念。。(摘抄課件,我自重= =) 動態規劃(Dynamic Programming, DP)是解決某一類問題的一種方法,是分析問題的一種途徑,而不是一種特殊演算法(如線性規劃是一種演算法)。因此,在學習動態規劃時,除了對基本概念和方法正確地理解外,應以豐富的想象力去建
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
dp 數塔 經典動態規劃問題
在講述DP演算法的時候,一個經典的例子就是數塔問題,它是這樣描述的: 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少? 已經告訴你了,這是個DP的題目,你能AC嗎? Input 輸入資料首先包括一個整數C,表示測試例項
HDU 2084 數塔 dp
數塔 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 43433 Accepted Submissio
藍橋杯 ALGO-3 演算法訓練 K好數 (動態規劃 DP)
如果一個自然數N的K進製表示中任意的相鄰的兩位都不是相鄰的數字,那麼我們就說這個數是K好數。求L位K進位制數中K好數的數目。例如K = 4,L = 2的時候,所有K好數為11、13、20、22、30、31、33 共7個。由於這個數目很大,請你輸出它對1000000007取模後的值。
BZOJ4828 AHOI/HNOI2017大佬(動態規劃+bfs)
math sub pre per 級別 include name map esp 註意到懟大佬的操作至多只能進行兩次。我們逐步簡化問題。 首先令f[i][j]表示第i天結束後自信值為j時至多有多少天可以進行非防禦操作(即恢復自信值之外的操作)。這個dp非常顯然。由於
UVA11584-Partitioning by Palindromes(動態規劃基礎)
tput form enc rom 結束 tdi ron str 出現 Problem UVA11584-Partitioning by Palindromes Accept: 1326 Submit: 7151Time Limit: 3000 mSec Proble