• 【USACO 1.5.1】数字金字塔


    【题目描述】

    观察下面的数字金字塔。

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

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

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

    【格式】

    INPUT FORMAT:

    (file numtri.in)

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

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

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

    OUTPUT FORMAT:

    (file numtri.out)

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

    【分析】

    不说了。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cmath>
     4 #include <cstring>
     5 #include <algorithm>
     6 #include <queue>
     7 const int maxn=1000+10;
     8 using namespace std;
     9 int data[maxn][maxn],f[maxn][maxn];
    10 int main()
    11 {
    12     int Max=0,n,i,j;
    13     //文件操作 
    14     freopen("numtri.in","r",stdin);
    15     freopen("numtri.out","w",stdout);
    16     scanf("%d",&n);
    17     for (i=1;i<=n;i++)
    18     for (j=1;j<=i;j++) scanf("%d",&data[i][j]);
    19     f[1][1]=data[1][1];
    20     Max=f[1][1];
    21     for (i=2;i<=n;i++)
    22     {
    23         f[i][1]=f[i-1][1]+data[i][1];
    24         Max=max(Max,f[i][1]);
    25         for (j=2;j<=i;j++)
    26         {
    27             f[i][j]=max(f[i-1][j-1]+data[i][j],f[i-1][j]+data[i][j]);
    28             Max=max(Max,f[i][j]);
    29         }
    30     }
    31     printf("%d",Max);
    32     return 0;
    33 }
  • 相关阅读:
    用WebStorm运行Vue项目
    秋招圆满结束
    最新的秋招进度 10月21号
    来更新一下秋招的进度~
    华为三面完进池子啦~9月17日
    C++ 迭代器失效问题
    C++类相关问题(空类、多态、重载、继承)
    C++各种变量、类型的存储位置
    写一个面试中场景题的总结
    明天要面阿里HR面了
  • 原文地址:https://www.cnblogs.com/hoskey/p/3788551.html
Copyright © 2020-2023  润新知