#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
#include using namespace std; int d[1001];int a[1001]; int main(void) {// d[i]는 a[i]를 마지막으로 하는 가장 긴 부분 수열의 길이int n;cin >> n;for (int i = 1; i > a[i];}d[1] = 1; // a[1]을 마지막으로 하는 가장 긴 증가하는 부분 수열의 길이 = 1 (원소 하나)// d[i]에서 a[i] 앞에 올 수 있는 원소를 a[j](j
1. 문제 설명n번째 열의 스티커를 뗀 상태를 정의하였다.n번째 열 1행, 2행 모두 떼지 않은 경우의 상태를 01행만 뗀 경우의 상태를 12행만 뗀 경우의 상태를 2라고 정의하였다. d[s][n] : n번째 열의 상태가 s 일 때 최고 점수 p0 : 1행의 점수를 저장한 배열p1 : 2행의 점수를 저장한 배열 d[0][n] = max(d[0][n-1], d[1][n-1], d[2][n-2])d[1][n] = max(d[0][n-1], d[2][n-1])+p0[n]d[2][n] = max(d[0][n-1], d[1][n-1])+p1[n]정답 : max(d[0][n],d[1][n],d[2][n]) 2. 소스 코드 #include #include using namespace std; int d[3][1000..