먼저 A[i]에 값을 입력 받으면서 B[i]에도 값을 똑같이 넣어준다.
A의 부분수열이 증가수열이면서
현재 비교대상값(B[i]) 보다 이전까지의 합+ 현재값 (B[j]+A[j])이 더 큰 경우 이 값을 현재 비교대상값(B[i])에 넣어준다.
코드 짜면서도 자꾸 헷갈려서 표에 값을 채워가며 생각했다
#include<iostream>
#include<vector>
using namespace std;
const int MAX = 1001;
int bis(int k) {
int result = 0;
int B[MAX];
vector<int>A(k);
for (int i = 0; i < k; i++) {
cin >> A[i];
B[i] = A[i];
for (int j = 0; j < i; j++) {
if (A[j] < A[i] && B[i] < B[j] + A[i])
B[i] = B[j] + A[i];
}
result = max(result, B[i]);
}
return result;
}
int main() {
int k;
cin >> k;
cout<<bis(k)<<endl;
return 0;
}