zoukankan      html  css  js  c++  java
  • [USACO1.5]数字三角形 Number Triangles

    题目描述

    观察下面的数字金字塔。

    写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。

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

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

    输入输出格式

    输入格式:

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

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

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

    输出格式:

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

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    int x[1005][1005],m,a,b,c,d,e,f[1005][1005],k;
    int main()
    {
        cin>>m;
        for(a=1;a<=m;a++)
        {
            for(b=1;b<=a;b++)
            {
                cin>>x[a][b];
            }
        }
        for(a=1;a<=m;a++)
        {
            for(b=1;b<=a;b++)
            {
                if(a==1)
                {
                    f[a][1]=x[1][1];
                }
                if(b-1>0&&b+1<=a)
                {
                    f[a][b]=max(x[a][b]+f[a-1][b-1],x[a][b]+f[a-1][b]);
                }
                else
                {
                    if(b-1<=0)
                    {
                        f[a][b]=x[a][b]+f[a-1][b];
                    }
                    else
                    {
                        f[a][b]=x[a][b]+f[a-1][b-1];
                    }
                }
            }
        }
        for(a=1;a<=m;a++)
        {
            if(f[m][a]>k)
            {
                k=f[m][a];
            }
        }
        cout<<k;
    }


  • 相关阅读:
    rmq +二分暴力 hdu 5726
    8.25 ccpc 比赛总结
    莫比乌斯反演题目总结
    HDU 4848 Wow! Such Conquering! (搜索+floyd)
    Codeforces 982 C Cut 'em all!(DFS)
    Codefoces 986C AND Graph(DFS)
    CodeForces 986A Fair(BFS)
    ACM经验贴
    Kattis A+B Problem(FFT)
    CF E. Porcelain (双向dp)
  • 原文地址:https://www.cnblogs.com/ztz11/p/9189981.html
Copyright © 2011-2022 走看看