티스토리 뷰

다시 푼 문제.

www.acmicpc.net/problem/11053

 

11053번: 가장 긴 증가하는 부분 수열

수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이

www.acmicpc.net

 

이전 글 : tose33.tistory.com/18

 

 

#include <iostream>
using namespace std;
#include <algorithm>

int d[1001];
int a[1001];

int main() {
    int n;
    cin >> n;
    for(int i = 1; i <= n; i++) cin >> a[i];

    d[1] = 1;

    pair<int, int> memo = make_pair(0,0);
    for(int i = 2; i <= n; i++) {
        int memo = 0; // memorize the biggest value
        for(int j = 1; j < i; j++) {
            if(a[j] < a[i] && d[j] > memo) {
                memo = d[j];
            }
        }
        d[i] = memo + 1;
    }

    cout << *max_element(d, d+n+1);

}

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
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
글 보관함