백준 알고리즘 기초 강좌
3장 다이나믹 프로그래밍 - (4) 문제 풀이 2 [11053번 - 가장 큰 증가하는 부분 수열]
살구르
2017. 8. 18. 18:01
#include <iostream>
using namespace std;
int d[1001];
int a[1001];
int main(void) {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
d[1] = a[1];
int max = 0;
for (int i = 2; i <= n; i++) {
d[i] = a[i];
for (int j = 1; j < i; j++) {
if (a[j] < a[i] && d[i]<d[j]+a[i]) {
d[i] = d[j] + a[i];
}
}
if (max < d[i])
max = d[i];
}
cout << max << endl;
return 0;
}