티스토리 뷰

https://www.acmicpc.net/problem/1912


dp[i] : i 까지 연속되는 최대합


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <algorithm>
#include <iostream>
using namespace std;
#define ARR_SIZE 100001
int arr[ARR_SIZE];
int dp[ARR_SIZE];
int main()
{
    int N;
    cin >> N;
    for(int i=1; i<=N; i++){
        cin >> arr[i];
    }
 
    for (int i = 1; i <= N; i++) {
        dp[i] = arr[i];
        if (dp[i] < dp[i - 1+ arr[i]) {
            dp[i] = dp[i - 1+ arr[i];
        }
    }
 
    int res = dp[1];
    for (int i = 1; i <= N; i++) {
        res = max(res, dp[i]);
    }
    cout << res;
}
/*
dp[0] = 10
dp[1] = 10+-4    
dp[2] = 10+-4+3
dp[3] = 10+-4+3+1
dp[4] = 10+-4+3+1+5
*/
cs


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함