プログラマ-整数三角形(C++)
#include <string>
#include <vector>
using namespace std;
int DP[501][501] = {0,};
int solution(vector<vector<int>> triangle) {
int answer = 0;
int triSize = triangle.size();
DP[1][1] = triangle[0][0];
for (int i = 2; i <= triSize; i++) {
for (int j = 1; j <= i; j++) {
if (DP[i-1][j-1] > DP[i-1][j]) {
DP[i][j] = DP[i-1][j-1] + triangle[i-1][j-1];
} else {
DP[i][j] = DP[i-1][j] + triangle[i-1][j-1];
}
}
}
for(int i = 1; i <= triSize; i++){
if(answer < DP[triSize][i]){
answer = DP[triSize][i];
}
}
return answer;
}
条件-三角形の頂部から底部まで、経路の和の最大値を求めます.これは簡単なDP問題です.値を検索するために配列を再割り当てましたが、他の人のプールが見えました.
与えられたベクトル端点から逆端点へベクトル値を直接更新して解答を探す方法もある.
それをより効果的に見つける方法を考えます.
Reference
この問題について(プログラマ-整数三角形(C++)), 我々は、より多くの情報をここで見つけました https://velog.io/@countryyoon/프로그래머스-정수-삼각형-C-bxzs7stlテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol