• 数塔


    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
     
     
    经典dp模型。
    View Code
     1 #include<stdio.h> 
    2 int max(int x,int y)
    3 {
    4 return x = x > y ? x: y;
    5 }
    6 int main()
    7 {
    8 int sum,i,j,a[101][101],c,n;
    9 scanf( "%d", &c );
    10 while( c-- )
    11 {
    12 scanf("%d",&n);
    13 for( i = 0; i < n; i++ )
    14 {
    15 for( j = 0; j <= i; j++ )
    16 scanf( "%d",&a[i][j] );
    17 }
    18 for( i = n-1; i > 0; i-- )
    19 {
    20 for( j = 0; j < i; j++ )
    21 {
    22 a[i-1][j] = max( a[i][j]+a[i-1][j], a[i][j+1]+a[i-1][j] );
    23 }//从后往前,从最底层开始往上加
    24 }
    25 printf( "%d\n", a[0][0] );
    26 }
    27 return 0;
    28 }

  • 相关阅读:
    寒假补习记录_4
    寒假补习记录_3
    寒假补习记录_2
    寒假补习记录_1
    公文流转系统编程
    Javaweb编程
    转:在静态方法中访问类的实例成员
    Java字段初始化规律
    原码,反码,补码浅谈
    java第二节课课后
  • 原文地址:https://www.cnblogs.com/zsj576637357/p/2422106.html
Copyright © 2020-2023  润新知