DFS

发布时间 2023-10-14 21:22:33作者: shalins

题目:https://www.luogu.com.cn/problem/P1216   //还需理解

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int r; int num[1005][1005];
int f[1005][1005];

int dfs(int n, int m) {
    if (n > r || m < 1 || m > r)
        return 0;
    if (f[n][m] != -1)
        return f[n][m];
    return f[n][m] = max(dfs(n + 1, m), dfs(n + 1, m + 1)) + num[n][m];
}

int main()
{  
    cin>>r;
    memset(f, -1, sizeof(f));
    for(int i = 1;i <= r;i++)
    {
        for(int j = 1;j <= i;j++)
        {
            cin>>num[i][j];
        }
    }
    cout << dfs(1,1) << "\n";
    return 0;
}