알고리즘/백준

[백준] 11055번 가장 큰 증가 부분 수열

JeongHyeon 2017. 12. 5. 19:58

문제


출처 : https://www.acmicpc.net/problem/11055


풀이과정


증가하는 부분 수열 (A[j]<A[i]) 중에서 현재 비교값 (DP[i]이 이전번째까지의 합 DP[j] + 자신의 값(A[i]) 보다 작을 때, DP[i] = DP[j] + A[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
#include <iostream>
 
int A[1001],DP[1001];
 
int main()
{
    int N,max=0;
 
    std::cin >> N;
 
    for (int i = 1; i <= N; i++std::cin >> A[i];
 
    for (int i = 1; i <= N; i++)
    {
        DP[i] = A[i];
        for (int j = 1; j < i; j++)
        {
            if (A[j] < A[i] && DP[i] < DP[j] + A[i])
                DP[i] = DP[j] + A[i];
        }
        if (max < DP[i]) max = DP[i];
    }
 
    std::cout << max;
 
    return 0;
}
cs