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
'알고리즘 문제' 카테고리의 다른 글
[백준] 1978번 소수 찾기 (0) | 2020.01.30 |
---|---|
[백준] 4673번 셀프 넘버 (0) | 2020.01.30 |
[백준] 11568번 민균이의 계략 (0) | 2020.01.29 |
[백준] 14501번 퇴사 (0) | 2020.01.29 |
[백준] 1110번 더하기 사이클 (0) | 2020.01.29 |