#include <iostream> #include <algorithm> using namespace std; int N; int Max; int arr[1010]; int dp[1010]; int solve(int cnt) { if(dp[cnt] != 0) { return dp[cnt]; } dp[cnt] = arr[cnt]; for(int i = cnt-1; i >= 1; i--) { if(arr[i] < arr[cnt]) { dp[cnt] = max(dp[cnt], solve(i) + arr[cnt]); } } return dp[cnt]; } int main(void) { // freopen("B11055_input.txt", "r", stdin); cin >> N; for(int i = 1; i <= N; i++) { cin >> arr[i]; } for(int i = N; i >= 1; i--) { Max = max(Max, solve(i)); } cout << Max; return 0; } | cs |
'Baekjoon > DP' 카테고리의 다른 글
[백준 11054] 가장 긴 바이토닉 부분 수열 (DP) (C/C++) (★★★) (0) | 2020.01.17 |
---|---|
[백준 11722] 가장 긴 감소하는 부분 수열 (DP) (C/C++) (★★) (0) | 2020.01.17 |
[백준 11053] 가장 긴 증가하는 부분 수열 (DP) (C/C++) (★★) (0) | 2020.01.17 |
[백준 2156] 포도주 시식 (DP) (C/C++) (★) (0) | 2020.01.17 |
[백준 9465] 스티커 (DP) (C/C++) (★) (0) | 2020.01.17 |