1. 程式人生 > >數字三角形問題(簡單動態規劃)-演算法設計與分析

數字三角形問題(簡單動態規劃)-演算法設計與分析

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/這是一道非常經典的動態規劃的題目,用到的思路我們在別的動態規劃題目中也很常用,以後我們稱為”區域性最優和全域性最優解法“。基本思路是這樣的,在每一步,我們維護兩個變數,一個是全域性最優,就是到當前元