zoukankan      html  css  js  c++  java
  • 1625 数字金字塔

    1625 数字金字塔

    链接:http://codevs.cn/problem/1625/

     

    USACO

     时间限制: 1 s
     空间限制: 128000 KB
     
     
     
     
    题目描述 Description

    考虑在下面被显示的数字金字塔.

    写一个程序来计算从最高点开始在底部任意处结束的路径经过数字的和的最大.

    每一步可以走到下方的点也可以到达右下方的点.

    7

    3 8

    8 1 0

    2 7 4 4

    4 5 2 6 5

     在上面的样例中,从 7 到 3 到 8 到 7 到 5 的路径产生了最大和:30

    输入描述 Input Description

    第一个行包含 R(1<= R<=1000) ,表示行的数目.

    后面每行为这个数字金字塔特定行包含的整数.

    所有的被供应的整数是非负的且不大于 100

    输出描述 Output Description

    单独的一行包含那个可能得到的最大的和.

    样例输入 Sample Input

    5

    7

    3 8

    8 1 0

    2 7 4 4

    4 5 2 6 5

    样例输出 Sample Output

    30

    数据范围及提示 Data Size & Hint
    题解:h[i][j]存该点数值, f[i][j]存从底部到该点的最大和,为该点值+Max(该点正下方最大和,该点斜下方最大和),即
    f[i][j]=max(f[i+1][j]+h[i][j],f[i+1][j+1]+h[i][j]);
    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    using namespace std;
    int h[1005][1005],f[1005][1005];
    int main(){
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=i;j++)
                scanf("%d",&h[i][j]);
        for(int j=1;j<=n;j++)f[n][j]=h[n][j];
        int i=n;
        while(i>1){
            i--;
            for(int j=1;j<=i;j++)
                f[i][j]=max(f[i+1][j]+h[i][j],f[i+1][j+1]+h[i][j]);
                
        }
            
        cout<<f[1][1]<<endl;
    }
  • 相关阅读:
    jmeter 插件
    jmeter beanshell
    Linux awk&sed
    Linux 各文件系统配置
    Linux常用基本命令 1
    testNg自动化,读取excel的数据
    jmeter 控制器
    Web
    SQL语句
    HTML
  • 原文地址:https://www.cnblogs.com/EdSheeran/p/7466250.html
Copyright © 2011-2022 走看看