zoukankan      html  css  js  c++  java
  • 1730数字三角形问题(DP)

    Description

    给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。
     
    对于给定的由n行数字组成的数字三角形,计算从三角形的顶至底的路径经过的数字和的最大值。

    Input

    输入数据的第1行是数字三角形的行数n,1≤n≤100。接下来n行是数字三角形各行中的数字。所有数字在0..99之间。

    Output

    输出数据只有一个整数,表示计算出的最大值。

    Sample

    Input 

    5
    7
    3 8
    8 1 0
    2 7 4 4
    4 5 2 6 5

    Output 

    30

    Hint

     1 #include <iostream>
     2 #include <stdio.h>
     3 #include <string>
     4 #include <string.h>
     5 #include <algorithm>
     6 #include <math.h>
     7 #include <map>
     8 #include <vector>
     9 
    10 #define inf 0x3f3f3f3f
    11 
    12 using namespace std;
    13 
    14 int main()
    15 {
    16     int n, i, j;
    17     int a[105][105], dp[105][105];
    18     cin >> n;
    19     for(i=0;i<n;i++)
    20     {
    21         for(j=0;j<=i;j++)
    22         {
    23             cin >> a[i][j];
    24         }
    25     }
    26     for(i=0;i<n;i++)
    27     {
    28         dp[n-1][i] = a[n-1][i];
    29     }
    30     for(i=n-2;i>=0;i--)
    31     {
    32         for(j=0;j<=i;j++)
    33         {
    34             dp[i][j] = a[i][j] + max(dp[i+1][j], dp[i+1][j+1]);
    35         }
    36     }
    37     cout << dp[0][0] << endl;
    38     return 0;
    39 }
  • 相关阅读:
    为什么要用MarkDown?
    Android Studio: Application Installation Failed
    git查看某个文件修改历史
    有些事现在不做,一辈子都不会做了
    onMouseOver&onMouseOut vs onMouseEnter&onMouseLeave
    versionCode & versionName
    display:none vs visibility:hidden
    polyfill
    combineReducers
    React Context
  • 原文地址:https://www.cnblogs.com/0xiaoyu/p/14090032.html
Copyright © 2011-2022 走看看