1. 程式人生 > >數字三角形問題 動態規劃問題 狀態轉移方程

數字三角形問題 動態規劃問題 狀態轉移方程

數字三角形問題
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description

給定一個由n行數字組成的數字三角形如下圖所示。試設計一個演算法,計算出從三角形的頂至底的一條路徑,使該路徑經過的數字總和最大。
這裡寫圖片描述
對於給定的由n行數字組成的數字三角形,計算從三角形的頂至底的路徑經過的數字和的最大值。

Input

輸入資料的第1行是數字三角形的行數n,1≤n≤100。接下來n行是數字三角形各行中的數字。所有數字在0..99之間。

Output

輸出資料只有一個整數,表示計算出的最大值。

Example Input

5

7

3 8

8 1 0

2 7 4 4

4 5 2 6 5

Example Output

30

#include <stdio.h>
#include <stdlib.h>
int max(int a , int b)
{
    return a>b?a:b;
}
int main()
{
    int i,j;
    int a[200][200],n;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        for
(j=1;j<=i;j++) scanf("%d",&a[i][j]); for(i=n-1;i>=1;i--) { for(j=i;j>=1;j--) a[i][j]+=max(a[i+1][j],a[i+1][j+1]); } printf("%d",a[1][1]); return 0; }