您当前的位置: 首页 > 

MangataTS

暂无认证

  • 3浏览

    0关注

    423博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

MangataTS 发布时间:2022-02-17 23:06:29 ,浏览量:3

题目连接

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[i−1][j−1],f[i−1][j]),注意的是开始的状态除了(0,0)位置为0其余都为-INF

代码
#include
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 f[i][j],f[i][j] += max(f[i-1][j-1],f[i-1][j]);

    int ans = -0x3f3f3f3f;
    for(int i = 1;i             
关注
打赏
1665836431
查看更多评论
0.0375s