#include <iostream>
//#include <cstdio>
#include <string>
//#include <stdlib.h>
#include <algorithm>
#include <cstring>
#include <vector>
using namespace std;
int cache[501][501];
int triangle[501][501];
int number;
int dp(int y_axis, int x_axis)
{
if (y_axis == number - 1)
return triangle[y_axis][x_axis];
int & result = cache[y_axis][x_axis];
if (result != -1)
return result;
return result = max(dp(y_axis + 1, x_axis),
dp(y_axis+1, x_axis + 1)) + triangle[y_axis][x_axis];
}
int main(void)
{
cin >> number;
memset(cache, -1, sizeof(cache));
for (int i = 0; i < number; i++)
for (int j = 0; j <= i; j++)
cin >> triangle[i][j];
int result= dp(0, 0);
cout << result;
return 0;
}
//다이나믹프로그래밍
'성우리뷰' 카테고리의 다른 글
앱 (2) | 2020.08.21 |
---|---|
범위가 커졌을 때의 최대 긴 증가수열 (1) | 2020.08.12 |
ls) 종만센세와 함께한 다이내믹 프로그래밍 (2) | 2020.08.11 |
나무막대) 아츠기 나나미의 "踊ってみた, HEROINE 育成計画" (4) | 2020.08.08 |
동적계획) 가장긴수열 (5) | 2020.08.04 |