알고리즘 문제
[백준] 11722번 가장 긴 감소하는 부분 수열
feelcoding
2020. 1. 29. 22:08
728x90
LIS 문제에서 부등호 하나만 반대 부등호로 바꿔주면 된다.
11722번: 가장 긴 감소하는 부분 수열
수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10} 이고, 길이는 3이다.
www.acmicpc.net
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int* numbers = new int[n];
for (int i = 0; i < n; i++) {
cin >> numbers[i];
}
int* lds = new int[n];
int maxLength = 0;
for (int i = 0; i < n; i++) {
int longestLength = 0;
for (int j = 0; j < i; j++) {
if (numbers[i] < numbers[j]) {
if (lds[j] > longestLength)
longestLength = lds[j];
}
}
lds[i] = longestLength + 1;
if (lds[i] > maxLength)
maxLength = lds[i];
}
cout << maxLength;
return 0;
}
728x90