- toc {:toc}
νμ΄
μ΅λκ°μ μ°Ύμ μ μλ μΌκ°νμ κ·μΉμ μκ°ν΄λ³Έλ€.
μμμλΆν° 맨 λ§μ§λ§ μΈ΅κΉμ§ λ΄λ €κ°λ©΄μ μ νν μ μλ κ° μ€ λμ κ°μ λν΄μ£Όλ©΄ 맨 λ§μ§λ§μ μλ κ°μ κ° λ£¨νΈλ‘ λν μ μλ μ΅λκ°μ΄ λλ€.
λλ¬Έμ 맨 λ§μ§λ§ μΈ΅μ κ° μ€ μ΅λκ°μ ꡬνλ©΄ ν΄λΉ κ°μ΄ μ΅λκ° λλ κ²½λ‘μ μλ μμ ν©μ΄λ€.
- μμ
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
λμ ν© μμ
dp[1][0] = dp[0][0] + dp[1][0] = 7 + 3, dp[1][1] = dp[0][0] + dp[1][1] = 7 + 8
dp[2][0] = dp[1][0] + dp[2][0] = 7+3+8, dp[2][2] = dp[1][1] + dp[2][2] = 7+8+0
dp[2][1] = max(dp[1][0], dp[1][1]) + dp[2][1] ...
μ¦, μΌμͺ½, μ€λ₯Έμͺ½ κ°μ₯μ리μ μμΉν κ²½μ° λ΄κ° λ겨 λ°μ μ μλ κ°μ΄ ν κ°μ§ λ°μ μκ³ , μ€κ°μ μμΉν κ²½μ° μΌμͺ½ λκ°, μ€λ₯Έμͺ½ λκ°μ κ°μ λ겨 λ°μ μ μκΈ° λλ¬Έμ λ μ€ ν° κ°μΌλ‘ λ겨 λ°μ μ΅λ κ²½λ‘λ₯Ό μ°Ύλλ€.
#include <bits/stdc++.h>
using namespace std;
#define X first
#define Y second
int dp[501][501] = {0,};
int n, maxNum=0;
int main(){
ios::sync_with_stdio(false);
using namespace std;
cin >> n;
int val;
for(int i=0; i<n; i++){
for(int j=0; j<=i; j++){
cin >> val;
dp[i][j] = val;
}
}
if(n == 1){
cout << dp[0][0];
exit(0);
}
for(int depth=1; depth<n; depth++){
for(int idx=0; idx<=depth; idx++){
if(idx == depth)
dp[depth][idx] = dp[depth-1][idx-1] + dp[depth][idx];
else if(idx == 0)
dp[depth][idx] = dp[depth-1][idx] + dp[depth][idx];
else
dp[depth][idx] = max(dp[depth-1][idx], dp[depth-1][idx-1]) + dp[depth][idx];
maxNum = max(maxNum, dp[depth][idx]);
}
}
cout << maxNum << '\n';
return 0;
}