-
삼각형 위의 최대 경로알고리즘 풀이/알고리즘 해결전략 연습 2019. 7. 3. 02:24
문제 : https://algospot.com/judge/problem/read/TRIANGLEPATH
코드( C++ ) 종만북 참조
#include <iostream>
#include <algorithm>
using namespace std;
const int MAX = 100;
int triangle[MAX][MAX];
int n;
int cache[MAX][MAX];
int path(int y, int x)
{
if (y == n - 1)
return triangle[y][x];
int& ret = cache[y][x];
if (ret != -1)
return ret;
return ret = max(path(y + 1, x), path(y + 1, x + 1)) + triangle[y][x]; // 부분 경로의 최대치를 구한다.
}
void Init()
{
for (int i = 0; i < n; ++i)
for (int j = 0; j <= i; ++j)
cache[i][j] = -1;
}
int main()
{
int C;
cin >> C;
while (C--)
{
cin >> n;
Init();
for(int i=0; i< n; ++i)
for (int j = 0; j <= i; ++j)
{
cin >> triangle[i][j];
}
int result = path(0, 0);
cout << result << endl;
}
return 0;
}
'알고리즘 풀이 > 알고리즘 해결전략 연습' 카테고리의 다른 글
삼각형 위의 최대 경로 수 세기 (0) 2019.07.07 원주율 외우기 (0) 2019.07.05 와일드카드 (0) 2019.07.01 외발 뛰기 (0) 2019.06.30 울타리 잘라내기 (0) 2019.06.29