首页 > 其他分享 >AcWing 898. 数字三角形

AcWing 898. 数字三角形

时间:2023-09-07 23:00:45浏览次数:36  
标签:结点 数字 898 整数 int 三角形 dp AcWing

JWvFczgRNg.jpg

题目

给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。

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

输入格式 第一行包含整数 $n$,表示数字三角形的层数。

接下来 $n$ 行,每行包含若干整数,其中第 $i$ 行表示数字三角形第 $i$ 层包含的整数。

输出格式 输出一个整数,表示最大的路径数字和。

数据范围 $1≤n≤500,−10000≤三角形中的整数≤10000$ 输入样例:

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

输出样例:

30

思路

动态规划一般从多到少,所以这里逆序进行动态规划

状态表示:从后i行选,列数不超过j的路径最大值的集合
状态计算:
	对于第i行第j个物品,存在dp[i][j] = max(dp[i + 1][j], dp[i + 1][j + 1]) + a[i][j]

代码

#include <cstring>
#include <iostream>

using namespace std;

const int N = 510, INF = 1e9;

int dp[N][N], a[N][N];
int n;

int main()
{
    cin >> n;
    
    for (int i = 1; i <= n; i ++ )
        for (int j = 1; j <= i; j ++ )
            cin >> a[i][j];
    
    for (int i = n; i >= 1; i -- )
        for (int j = 1; j <= i; j ++ )
            dp[i][j] = max(dp[i + 1][j], dp[i + 1][j + 1]) + a[i][j];
    
    cout << dp[1][1] << endl;
    
    return 0;
}

标签:结点,数字,898,整数,int,三角形,dp,AcWing
From: https://blog.51cto.com/u_16170343/7402664

相关文章

  • AcWing 4. 多重背包问题
    题目有$N$种物品和一个容量是$V$的背包。第$i$种物品最多有$s_i$件,每件体积是$v_i$,价值是$w_i$。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,$N,V$,用空格隔开,分别表示物品种数和背包容积。接下来......
  • C++ 算法竞赛、02 周赛篇 | AcWing 第2场周赛
    AcWing第2场周赛竞赛-AcWing3626三元一次方程AcWing3626.三元一次方程-AcWing两层循环#include<iostream>usingnamespacestd;voidfind(intn){for(intx=0;x<=1000/3;x++){for(inty=0;y<=1000/5;y++){int......
  • AcWing 3. 完全背包问题
    题目有$N$种物品和一个容量是$V$的背包,每种物品都有无限件可用。第i$种物品的体积是$v_i$,价值是$w_i$。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,$N,V$,用空格隔开,分别表示物品种数和背包容积。......
  • 【CSS】画三角形
    <html><head><title>CSS绘制三角形</title></head><body><div><h1>实心三角形</h1><divclass="filled-triangle-1"></div>......
  • C++ 算法竞赛、01 周赛篇 | AcWing 第1场周赛
    AcWing第1场周赛竞赛-AcWing3577选择数字3577.选择数字-AcWing题库朴素暴力两层循环#include<cstdio>#include<iostream>#include<unordered_set>usingnamespacestd;constintN=101;inta[N],b[N];intmain(){intn,m;cin>>n;......
  • AcWing 2. 01背包问题
    题目有$N$件物品和一个容量是$V$的背包。每件物品只能使用一次。第$i$件物品的体积是$v_i$,价值是$w_i$。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,$N,V$,用空格隔开,分别表示物品数量和背包容积。......
  • 【230904-5】▲ABC中,a=1,B=45°,S△=2,则三角形的外接圆半径为?
    ......
  • 【230904-4】▲ABC中,A=60°,b=1,▲ABC的外接圆半径为1,则三角形面积=?
    ......
  • OpenGL入门——使用EBO绘制三角形
    上一节OpenGL入门——第一个三角形(1)-一只小瓶子-博客园(cnblogs.com)介绍了opengl怎么使用VAO和VBO绘制一个三角形这一节介绍一下使用EBO绘制 元素缓冲对象(ElementBufferObject,EBO),也叫索引缓冲对象(IndexBufferObject,IBO)。为什么会需要用到元素缓冲对象呢?因为上......
  • 数字三角形
    一般指那种矩形上的二维DP。母题考虑向下DP,每个点可以从上、上向右一格转移过来,复杂度\(O(r^2)\)。1做两遍,然后两个是一起走的,所以只需要直到一个的坐标和另外一个点的一个坐标,就可以推出四个坐标。状态就是四个坐标(当然也可以记录差值),然后主要就考虑转移时会不会到达一个点......