#include <iostream> using namespace std; int max(int a,int b) {return a>=b? a:b;} int main() { int N=0; int dp[501][501]={0}; int M=0; cin >> N;
for(int i=1; i <= N; i++) for(int j=1; j<=i; j++) cin >> dp[i][j]; for(int i=2; i <= N; i++) for(int j=1; j<=i; j++) { if(j==1) dp[i][j]=dp[i-1][1]+dp[i][j]; else if(j==i) dp[i][j]=dp[i-1][j-1]+dp[i][j]; else dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+dp[i][j]; } M=dp[N][1]; for(int i=2; i<=N; i++) { if(M<dp[N][i]) M=dp[N][i]; else continue; }
cout << M;
return 0; } |
맨날 10번씩 틀린거 다시하고 다시하고 했는데 한번에 맞았다 ㅠㅠ감덩
'알고리즘 문제 풀이 > 1DP_과제(~180615)' 카테고리의 다른 글
171010_1085_직사각형에서 탈출 (0) | 2017.10.10 |
---|---|
20171009_2156_포도주 시식 (0) | 2017.10.09 |
20171008_11844_쉬운 계단 수 (0) | 2017.10.08 |
20171007_2193_이친수 (0) | 2017.10.07 |
20171006_1149_RGB거리 (0) | 2017.10.06 |