蓝桥算法训练 数字三角形 ALGO-124(数塔,经典dp)(hdu 2084)

问题描述

  (图3.1-1)示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路
  径,使该路径所经过的数字的总和最大。
  ●每一步可沿左斜线向下或右斜线向下走;
  ●1<三角形行数≤100;
  ●三角形中的数字为整数0,1,…99;

  .
  (图3.1-1)

输入格式

  文件中首先读到的是三角形的行数。

  接下来描述整个三角形

输出格式

  最大总和(整数)

样例输入

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

样例输出

30

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#include <cmath>
#include <queue>
#include <deque>
#include <cmath>
#include <map>

using namespace std;
typedef long long ll;

#define INF 0x7fffffff
const double inf=1e20;
const int maxn=1000+10;
const int mod=1e7;
const double pi=acos(-1);

int a[maxn][maxn];

int main() {
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        for(int j=0;j<=i;j++){
            scanf("%d",&a[i][j]);
        }
    }
    //printf("...");
    for(int i=n-2;i>=0;i--){
        for(int j=0;j<=i;j++){
            a[i][j]+=max(a[i+1][j],a[i+1][j+1]);
        }
    }
    printf("%d\n",a[0][0]);
    return 0;
}

原文地址:https://www.cnblogs.com/wz-archer/p/12507743.html

时间: 2024-11-06 03:39:08

蓝桥算法训练 数字三角形 ALGO-124(数塔,经典dp)(hdu 2084)的相关文章

算法训练 数字三角形

时间限制:1.0s   内存限制:256.0MB 问题描述 (图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1<三角形行数≤100: ●三角形中的数字为整数0,1,…99: . (图3.1-1) 输入格式 文件中首先读到的是三角形的行数. 接下来描述整个三角形 输出格式 最大总和(整数) 样例输入 573 88 1 02 7 4 44 5 2 6 5 样例输出 30 import ja

算法训练 数字三角形(DP)

问题描述 (图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1<三角形行数≤100: ●三角形中的数字为整数0,1,…99: . (图3.1-1) 输入格式 文件中首先读到的是三角形的行数. 接下来描述整个三角形 输出格式 最大总和(整数) 样例输入 573 88 1 02 7 4 44 5 2 6 5 样例输出 30 从下往上进行计算就好了,还可以用DP的方法来解 #include<

HDU-2084 数塔 经典dp,水

1.HDU-2084   数塔 2.链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 3.总结:从下往上推,最后归于顶点.方程为  dp[i][j] = max(dp[i+1][j],dp[i+1][j+1])+a[i][j] #include<iostream> #include<cstring> #include<cmath> #include<queue> #include<algorithm&g

16-算法训练 数字三角形

http://lx.lanqiao.cn/problem.page?gpid=T312 算法训练 数字三角形 时间限制:1.0s   内存限制:256.0MB 问题描述 (图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1<三角形行数≤100: ●三角形中的数字为整数0,1,…99: . (图3.1-1) 输入格式 文件中首先读到的是三角形的行数. 接下来描述整个三角形 输出格式 最大总

HDU 2084 数塔 --- 入门DP

HDU 2084 数塔 从下往上递推,状态转移方程 dp[i][j] = max( dp[i+1][j], dp[i+1][j+1]) + a[i][j]; /* HDU 2084 数塔 --- 入门DP */ #include <cstdio> const int N = 105; int dp[N][N]; int MAX(int a, int b){ return a > b ? a : b; } int main() { #ifdef _LOCAL freopen("D

蓝桥杯 算法训练 ALGO-152 8-2求完数

算法训练 8-2求完数 时间限制:50.0s   内存限制:256.0MB 问题描述 如果一个自然数的所有小于自身的因子之和等于该数,则称为完数.设计算法,打印1-9999之间的所有完数. 样例输出 与上面的样例输入对应的输出.例: 数据规模和约定 1-9999 题目解析: 在求一个自然数的因子时,只需要循环的用该自然数与小于它的一半加一取余即可,这样可以将循环次数缩短 1 / 2 ,提高运行速度. 示例代码: 1 public class Main { 2 public static void

蓝桥 算法训练 比较字符串

算法训练 比较字符串 Description 编程实现两个字符串s1和s2的字典序比较.(保证每一个字符串不是另一个的前缀,且长度在100以内).若s1和s2相等,输出0:若它们不相等,则指出其第一个不同字符的ASCII码的差值:如果s1>s2,则差值为正:如果s1<s2,则差值为负. Input 输入描述: 输入样例: java basic Output 输出描述: 输出样例: 8 Hint HINT:时间限制:1.0s 内存限制:512.0MB Source 蓝桥杯练习系统 ID: 170

HDU 1176(类似数字三角形的题,很经典,值得仔细理解的dp思维)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1176 免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 60927    Accepted Submission(s): 21380 Problem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径

HDU 2084 数塔(简单DP入门)

数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 41852    Accepted Submission(s): 24820 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的:有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?