数塔

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 10219    Accepted Submission(s): 6119

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
Source
2006/1/15 ACM程序设计期末考试
解题报告:这道题是动态规划初学者最好的练习题目,以前用C/C++写过,但是最近初学JAVA,动态规划最重要的是找到状态方程,当前状态只和下面的还有右下的状态有关!状态方程为:a[i][j] += Max(a[i + 1][j + 1], a[i + 1][j]);
代码如下:
import java.util.Scanner;
public class Main{public static void main(String[] args){Scanner scan = new Scanner(System.in);int i, n, m, j, k;n = scan.nextInt();for (k = 1; k <= n; ++k){m = scan.nextInt();int [][]a = new int[m + 2][m + 2];for (i = 1; i <= m; ++i){for (j = 1; j <= i; ++j){a[i][j] = scan.nextInt();}}for (i = m; i >= 1; --i){for (j = 0; j <= i; ++j){a[i][j] += Max(a[i + 1][j + 1], a[i + 1][j]);//状态方程
                }}System.out.println(a[1][1]);}}public static int Max(int x, int y){if (x > y){return x;}return y;}
}

转载于:https://www.cnblogs.com/lidaojian/archive/2012/05/26/2519169.html

HDU 2084 数塔(DP)(JAVA版)相关推荐

  1. HDU 2084 数塔 DP

    http://acm.hdu.edu.cn/showproblem.php?pid=2084 题目: 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走 ...

  2. HDU -- 2084 数塔(简单DP)

    HDU -- 2084  数塔 题意: 自上而下,选择一条累计和最大的路径 分析: 顶点只与左右两个子节点相关,且子节点路径的选择与顶点无关(无后效性) 状态dp[i][j]:表示(i,j)点向下得到 ...

  3. hdu 2084 数塔(DP)

    数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  4. HDU - 2084 数塔

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 #include <iostream> #include <string.h& ...

  5. HD 2048 数塔 DP(简单递推)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这 ...

  6. SDJZU_新生_递推动规_HDU 2084 数塔

    数塔 Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:32768KB     64bit IO Fo ...

  7. 汉诺塔(java版)

    汉诺塔原理 汉诺塔规则:有A.B.C三根柱子,设汉诺塔层数为N,则最底最大的一个盘数便是N.例如下图有三层则N=3,我们只需将A柱上(1-N)个盘全部移至B柱或C柱上即可(挪动盘时,N值大的必须放在N ...

  8. Leetcode有java版么_leetcode 1. 两数之和(Java版)

    题目描述:(题目难度,简单) 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你 ...

  9. 1071: 数塔 (动态规划)

    题目描述 PIPI在CSU的某个角落发现了一座金字塔,而且这座金字塔是由数字组成的(如下图所示),现在PIPI想到塔顶去看看,它可以从底层任意一个数字出发逐层爬上去.PIPI每次可以爬至上一层相邻的数 ...

最新文章

  1. 小程序 reduce_使用reduce制作的10个更多实用程序功能
  2. smarty模板引擎_3-预保留变量
  3. iOS点击推送消息跳到应用指定页面
  4. [渝粤教育] 中国地质大学 电力系统保护原理 复习题 (2)
  5. 【kubernetes】http proxy error stream error stream ID 3 INTERNAL_ERROR
  6. php折半查找算法,PHP如何实现折半查找算法
  7. 微信大改版,更新前必看的4个东西
  8. 坐标下降法和交替最小二乘法的区别是什么?
  9. 龙卷风路径_如何设置龙卷风路径
  10. win10下用VM 14安装OS X 10.11
  11. 计算机网络:三种交换方式
  12. 2GB显存畅玩 DeepFaceLab更新至2019.12.29
  13. java逻辑思维练习
  14. 【LSGDOJ 2015】数页码
  15. 界面布局layout
  16. Android的px、dp、sp的区别
  17. LUNIX Anubis安装
  18. Python脚本实现12306火车票自动抢票回家or旅游
  19. linux上删除rime方案_【输入法】Rime-中州韵 基本设置 附:官方定制指南
  20. 从零手写Resnet50实战——利用 torch 识别出了虎猫和萨摩耶

热门文章

  1. pip install 豆瓣源、清华源、阿里源、中国科技大学源
  2. Linux shell 学习笔记(8)— 使用结构化命令(if-then 语句、数值比较、字符串比较、文件比较、case 语句)
  3. 【牛腩新闻发布系统】整合前台04
  4. 垃圾回收 内存管理 python
  5. virtualenv创建虚拟环境为主_多版本
  6. 单周期十条指令CPU设计与verilog实现(Modelsim)
  7. GOF23设计模式(创建型模式) 原型模式
  8. BAD SLAM:捆绑束调整直接RGB-D SLAM
  9. 2021年大数据Hadoop(三):Hadoop国内外应用
  10. 2021年大数据Spark(十六):Spark Core的RDD算子练习