본문 바로가기
알고리즘/DP

2229 조짜기

by tryotto 2019. 7. 12.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#include <math.h>
 
int arr[1005= { 0 };
int dp[1005][1005= { 0 };
 
int main() {
    int n;
    scanf("%d"&n);
 
    for (int i = 1; i <= n; i++) {
        scanf("%d"&arr[i]);
    }
 
    for (int i = 1; i <=  n; i++) {
        for (int k = 1; i + k <= n; k++) {
            dp[i][i + k] = abs(arr[i] - arr[i + k]);
        }
    }
 
    for (int d = 2; d < n; d++) {
        for (int i = 1; i + d <= n; i++) {
            int maxV = 0;
            for (int mid = i; mid + 1 <= i + d; mid++) {
                int val = dp[i][mid] + dp[mid + 1][i+d];
 
                if (maxV < val)
                    maxV = val;
            }
 
            if(dp[i][i+d]<maxV)
                dp[i][i + d] = maxV;
;        }
    }
    printf("%d", dp[1][n]);
}
cs


'알고리즘 > DP' 카테고리의 다른 글

3943 헤일스톤 수열  (0) 2019.07.12
9252 LCS 2  (0) 2019.07.12
2602 돌다리 건너기  (0) 2019.07.12
2352 반도체 설계  (0) 2019.07.11
11049 행렬 곱셈 셈 순서  (0) 2019.07.11