• HDOJ_ACM_数塔


    Problem Description
    在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的:

    有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?

    已经告诉你了,这是个DP的题目,你能AC吗?
     
    Input
    输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= 100),表示数塔的高度,接下来用N行数字表示数塔,其中第i行有个i个整数,且所有的整数均在区间[0,99]内。
     
    Output

                对于每个测试实例,输出可能得到的最大和,每个实例的输出占一行。
     
    Sample Input
    1
    5
    7
    3 8
    8 1 0 
    2 7 4 4
    4 5 2 6 5
     
    Sample Output
    30
     
     
    Code
    View Code
     1 //build frame, input, handle, output
     2 #include <stdio.h>
     3 int f[105][105];
     4 int main()
     5 {
     6     int T, N, i, j, max;
     7     scanf("%d", &T);
     8     while (T--)
     9     {
    10         //input
    11         scanf("%d", &N);
    12         for (i = 1; i <= N; i++)
    13             for (j = 1; j <= i; j++)
    14                 scanf("%d", &f[i][j]);
    15         //handle
    16         for (i = 2; i <= N; i++)
    17             for (j = 1; j <= i; j++)
    18                 f[i][j] += f[i - 1][j - 1] > f[i - 1][j] ?
    19                         f[i - 1][j - 1] : f[i - 1][j];
    20         //get the biggest number and print
    21         max = -1;
    22         for (j = 1; j <= N; j++)
    23             max = max > f[N][j] ? max : f[N][j];
    24         printf("%d\n", max);
    25     }
    26     return 0;
    27 }
    View Code
    Key Points
    The first one is top-down.
    The seconde one is buttom-up.

     

  • 相关阅读:
    简单说说数据库表设计的三种范式
    存储过程简单的动态订单号
    Asp.Net页面生命周期
    jq 小笔记,上传判断其格式
    吃一垫长一智
    离散事件模拟
    二叉树查找树
    冷暖自知
    基督徒的人生箴言
    迷宫寻路
  • 原文地址:https://www.cnblogs.com/chuanlong/p/2767400.html
Copyright © 2020-2023  润新知