AcWing 898. 数字三角形(线性DP)

Posted MangataTS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AcWing 898. 数字三角形(线性DP)相关的知识,希望对你有一定的参考价值。

题目连接

https://www.acwing.com/problem/content/description/900/

思路

我们知道对于当前的这一层,只能从左上和正上方转移过来,那么我们定义 f [ i ] [ j ] f[i][j] f[i][j]表示的是从第一层到第i层第j列的最大路径数值和,那么不难发现 f [ i ] [ j ] = a [ i ] [ j ] + m a x ( f [ i − 1 ] [ j − 1 ] , f [ i − 1 ] [ j ] ) f[i][j] = a[i][j] + max(f[i-1][j-1],f[i-1][j]) f[i][j]=a[i][j]+max(f[i1][j1],f[i1][j]),注意的是开始的状态除了(0,0)位置为0其余都为-INF

代码

#include<bits/stdc++.h>
using namespace std;

const int N = 5e2+10;

int a[N][N],f[N][N];
int n;
int main()

    cin>>n;
    memset(f,-0x3f3f3f3f,sizeof f);
    f[0][0] = 0;
    for(int i = 1;i <= n; ++i) 
        for(int j = 1;j <= i; ++j)
            cin>>f[i][j],f[i][j] += max(f[i-1][j-1],f[i-1][j]);

    int ans = -0x3f3f3f3f;
    for(int i = 1;i <= n; ++i) ans = max(f[n][i],ans);
    cout<<ans<<endl;
    
    
    return 0;

以上是关于AcWing 898. 数字三角形(线性DP)的主要内容,如果未能解决你的问题,请参考以下文章

算法基础课题目时间

898. 数字三角形简单 / DP

动态规划线性dp问题总结:数字三角形最长上升子序列最长公共子序列最短编辑距离 题解与模板

线性DP的几种模型和例题

898. 数字三角形

DP 类型题一 (模型:数字三角形+最长上升子序列+背包)