數字三角形問題(簡單動態規劃)-演算法設計與分析
const int maxn=100; int a[maxn][maxn]; int dp[maxn][maxn]; int main() { int n; cin>>n; memset(a,0,sizeof(a)); memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) cin>>a[i][j]; for(int i=1;i<=n;i++) dp[n][i]=a[n][i]; for(int i=n-1;i>0;i--) for(int j=1;j<=i;j++) dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+a[i][j]; cout<<dp[1][1]<<endl; return 0; } /* 5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 */
相關推薦
數字三角形問題(簡單動態規劃)-演算法設計與分析
const int maxn=100; int a[maxn][maxn]; int dp[maxn][maxn]; int main() { int n; cin>>n;
POJ1163數字三角形【簡單動態規劃】
The Triangle POJ - 1163 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (Figure 1) Figure 1 shows a number triangle. Write a prog
codeforces 某套題s : surf(貪心 || 動態規劃)
blog 時間 with mis 動態規劃 oal 區間 could points 題目: Now that you’ve come to Florida and taken up surfing, you love it! Of course, you’ve reali
POJ-1458 LCS(線性動態規劃)
cstring turn sizeof namespace ret div algo 動態 std 此題經典線性動態規劃。 代碼如下: #include<iostream> #include<cstdio> #include<cstdlib&
BZOJ4347 POI2016Nim z utrudnieniem(博弈+動態規劃)
define lin sort mes char urn ont ring 數組 由nim遊戲的結論,顯然等價於去掉一些數使剩下的數異或和為0。 暴力的dp比較顯然,設f[i][j][k]為前i堆移走j堆(模意義下)後異或和為k的方案數。註意到總石子數量不超過1e7
演算法設計與分析——動態規劃(一)矩陣連乘
動態規劃——Dynamic programming,可以說是本人一直沒有啃下的骨頭,這次我就得好好來學學Dynamic programming. OK,出發! 動態規劃通常是分治演算法的一種特殊情況,它一般用於最優化問題,如果這些問題能夠: 1.能夠分解為規模更小的子問題 2.遞迴的
Codeforces1076F. Summer Practice Report(貪心+動態規劃)
題目連結:傳送門 題目: F. Summer Practice Report time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard
S - Spiderman POJ - 1925 (區間動態規劃)
S - Spiderman POJ - 1925 Dr. Octopus kidnapped Spiderman's girlfriend M.J. and kept her in the West Tower. Now the hero, Spiderman, ha
NYOJ 995 硬幣問題(經典動態規劃)
硬幣找零 時間限制:1000 ms | 記憶體限制:65535 KB 難度:3 輸入 輸入資料: 第 1 行,為 N 和 T,其中 1≤N≤50 為硬幣系統中不同硬幣數;1≤T≤100000 為需要用硬幣找零的總數。 第 2 行為 N 個數值不大於 65535 的
演算法設計與分析--動態規劃(十)
Scramble String 題目 Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrings recursive
Dijkstra演算法,求最短路(dp 動態規劃)
•迪傑斯特拉(Dijkstra)演算法思想 按路徑長度遞增次序產生最短路徑演算法: 把V分成兩組: (1)S:已求出最短路徑的頂點的集合 (2)V-S=T:尚未確定最短路徑的頂點集合 將T中頂點按最短路徑遞增的次序加入到S中, 保證:(1)從源點V0到S中各
整數劃分-劃分數(DP動態規劃)
給你一個正整數n,讓你計算出n的m劃分有幾種方法。思路:定義dp[i][j]為i的j劃分,即將i劃分為j個數字之和的方案數。1:當j<=i時,此時,劃分個數不超過i,此時是正常的劃分。 劃分的結果一定只有兩種型別:一種是j個數字,都大於0。另一種是有0,即不夠劃
最大子陣列問題(動態規劃)--【演算法導論】
前些天學車...真是相當累啊,比上課累,現在終於可以休息了... 重新看《演算法導論》,不過這下可得認真看了,9個月不到就得去找工作了,與我同樣的大三黨們一樣加油咯... 《演算法導論》中引入這個問題是通過股票的購買與出售,將前一天的當天的股票差價重新表示出來,即轉為了一個
連續子陣列的最大和(基於動態規劃)
題目 輸入一個整型陣列,數組裡有正數也有負數。陣列中一個或連續的多個整陣列成一個子陣列。求所有子陣列的和的最大值。要求時間複雜度為O(n)。例如輸入的陣列為{1,-2,3,10,-4,7,2,-5},和最大的子陣列為{3,10,-4,7,2},因此輸出為該子陣列的和18。 思路 一般解法 從
連續子數組的最大和(基於動態規劃)
動態 pty ostream style http 還要 clu ons 連續子數組 題目 輸入一個整型數組,數組裏有正數也有負數。數組中一個或連續的多個整數組成一個子數組。求所有子數組的和的最大值。要求時間復雜度為O(n)。例如輸入的數組為{1,-2,3,10,-4,
leetcode:解碼方法(java動態規劃)
package LeetCode; /* 一條包含字母 A-Z 的訊息通過以下方式進行了編碼: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 給定一個只包含數字的非空字串,請計算解碼方法的總數。 示例 1: 輸入: "12" 輸出: 2 解釋: 它可以解碼為 "A
leetcode:不同路徑(java動態規劃)
一個機器人位於一個 m x n 網格的左上角 (起始點在下圖中標記為“Start” )。 機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記為“Finish”)。 問總共有多少條不同的路徑? 例如,上圖是一個7 x 3 的網格。有多少可能的路徑? 說明:m 和 n 的值均不
Binary Tree Maximum Path Sum(樹形動態規劃)
題意:Given a binary tree, find the maximum path sum. The path may start and end at any node in the tree. For example: Given the be
記憶化搜尋(搜尋+動態規劃)HDU1978 How Many Ways
這是一個簡單的生存遊戲,你控制一個機器人從一個棋盤的起始點(1,1)走到棋盤的終點(n,m)。遊戲的規則描述如下: 1.機器人一開始在棋盤的起始點並有起始點所標有的能量。 2.機器人只能向右或者向下走,並且每走一步消耗一單位能量。 3.機器人不能在原地停留。 4.當機器人選擇了一條可行路徑後,當他走到
Maximum Subarray連續子序列最大和 -- LeetCode(經典動態規劃)
原題連結: http://oj.leetcode.com/problems/maximum-subarray/這是一道非常經典的動態規劃的題目,用到的思路我們在別的動態規劃題目中也很常用,以後我們稱為”區域性最優和全域性最優解法“。基本思路是這樣的,在每一步,我們維護兩個變數,一個是全域性最優,就是到當前元