码迷,mamicode.com
首页 > 其他好文 > 详细

HDU2084-数塔

时间:2015-08-10 01:39:49      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

描述:

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

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

技术分享

代码:

  

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<stdlib.h>
#include <math.h>
#define N 105
using namespace std;
int height,tree[N][N],dp[N][N];

int main(){
    int testcase;
    scanf("%d",&testcase);
    while ( testcase-- ){
        scanf("%d",&height);
        memset(dp,0,sizeof(dp));
        for( int i=0;i<height;i++ ){
            for( int j=0;j<i+1;j++ ){
                scanf("%d",&tree[i][j]);
            }
        }
        for( int i=height-1;i>=0;i-- ){
            for( int j=0;j<i+1;j++ ){
                dp[i][j]=tree[i][j]+max(dp[i+1][j],dp[i+1][j+1]);
            }
        }
        printf("%d\n",dp[0][0]);
    }
    system("pause");
    return 0;
}

HDU2084-数塔

标签:

原文地址:http://www.cnblogs.com/lucio-yr/p/4716740.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!