#include #include using namespace std; int d[301][2];int a[301]; int main(void) {int n;cin >> n;for (int i = 1; i > a[i];}// d[n][0] : n개 계단에서 n-1 번째 계단을 밟는 경우의 최대 값 = max(d[n-3][0], d[n-3][1]) + a[n] + a[n-1]// d[n][1] : n개 계단에서 n-2 번째 계단을 밟는 경우의 최대 값 = max(d[n-2][0], d[n-2][1]) + a[n]d[1][0] = a[1];d[1][1] = a[1];d[2][0] = a[2] + a[1];d[2][1] = a[2];d[3][0] = a[3] + a[2];d[3][1] = a[3] + a[1];..
d[i] : a[i]를 마지막에 포함하는 가장 큰 연속합d[i]=max(d[i-1]+a[i], a[i]) 정답 : max(d[i]) #include #include using namespace std; int d[100001];int a[100001];int main(void) {int n;cin >> n;for (int i = 1; i > a[i];} d[1] = a[1];for (int i = 2; i
D[i] : a[i]를 마지막에 포함하는 가장 긴 증가하는 부분 수열의 길이d[i] : a[i]를 시작으로 포함하는 가장 긴 감소하는 부분 수열의 길이 정답 : max(D[i]+d[i]-1), 1 n;for (int i = 1; i > a[i];}/*D[i] : a[i]를 마지막에 포함하는 가장 긴 증가하는 부분 수열의 길이d[i] : a[i]를 시작으로 포함하는 가장 긴 감소하는 부분 수열의 길이정답 : max(D[i] + d[i] - 1), 1