[计蒜客]dp

今天acwing里有个题,我还是还以为是完全二叉树,结果我队内dalao一说,原来是线性dp,刚好又是计蒜客的题,那就正好补一下计蒜客的题吧。

捡水果

题目链接


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

int a[1004][1003];
int dp[1003][1004];
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 = 1; i <= n ; i++){
        for(int j  =1; j <= i ; j ++){
            dp[i][j] = max( dp[i - 1][j] , dp[i - 1][j - 1] ) + a[i][j];
        }
    }
    int ans = 0;

    for(int i = 1; i <= n ; i ++){
        if( dp[n][i] > ans  ){
            ans = dp[n][i];
        }
    }

    for(int i = 1; i <= n ; i++){
        for(int j  =1; j <= i ; j ++){
           cout << dp[i][j] << ' ';
        }
        cout << endl;
    }

    cout << ans <<endl;

    return 0;
}

posted @ 2021-01-10 17:08  Hoppz  阅读(70)  评论(0编辑  收藏  举报