| //https://www.acmicpc.net/problem/11055 #include <iostream> |
| using namespace std; |
| int main() |
| { |
| int n; |
| cin >> n; |
| int A[1001]; |
| int dp[1001]; |
| int x,max,index; |
| for(int i=1; i<=n; i++) cin >> A[i]; |
| dp[1]=A[1]; |
| for(int i=2; i<=n; i++) |
| { |
| max=0; |
| for(int j=i-1; j>0; j--) |
| { |
| x=A[i]; |
| if(A[i]>A[j]) x=dp[j]+A[i]; |
if(max<x) { max=x;} |
| } |
| dp[i]=max; |
| } |
| max=0; |
| for(int i=1; i<=n; i++) |
| if(max<dp[i]) max=dp[i]; |
| cout << max; |
| } |
어제 한 상자 넣기랑 같다. 숫자, 수열로만 접근했을 때는 해결책을 못 찾아서 dp 문제를 풀면서 미뤄뒀던 문제들인데 푸는 방법을 이제 알겠음!
'알고리즘 문제 풀이 > 1DP_과제(~180615)' 카테고리의 다른 글
| 171210_11053_가장 긴 증가하는 부분 수열 (0) | 2017.12.10 |
|---|---|
| 171209_11722_가장 긴 감소하는 부분 수열 (0) | 2017.12.09 |
| 171208_1965_상자넣기 (0) | 2017.12.08 |
| 171208_11060_점프 점프 (0) | 2017.12.08 |
| 171207_5598_카이사르 암호 (0) | 2017.12.07 |