#include <iostream> #include <algorithm> using namespace std; int N; int Max = -99999999; int arr[100010]; int dp[100010]; int solve(int cnt) { if(cnt == 0) { return 0; } if(dp[cnt] != -1111) { return dp[cnt]; } dp[cnt] = arr[cnt]; dp[cnt] = max(dp[cnt], dp[cnt] + solve(cnt-1)); return dp[cnt]; } int main(void) { // freopen("B1912_input.txt", "r", stdin); cin >> N; for(int i = 1; i <= N; i++) { cin >> arr[i]; dp[i] = -1111; } // for(int i = N; i >= 1; i--) // { // Max = max(Max, solve(i)); // } solve(N); for(int i = 1; i <= N; i++) { if(Max < dp[i]) { Max = dp[i]; } } cout << Max; return 0; } | cs |
'Baekjoon > DP' 카테고리의 다른 글
[백준 1699] 제곱수의 합 (DP) (C/C++) (0) | 2020.01.21 |
---|---|
[백준 2579] 계단 오르기 (DP) (C/C++) (0) | 2020.01.18 |
[백준 11054] 가장 긴 바이토닉 부분 수열 (DP) (C/C++) (★★★) (0) | 2020.01.17 |
[백준 11722] 가장 긴 감소하는 부분 수열 (DP) (C/C++) (★★) (0) | 2020.01.17 |
[백준 11055] 가장 큰 증가 부분 수열 (DP) (C/C++) (★★) (0) | 2020.01.17 |