티스토리 뷰

또 다른 동적 계획법 문제인 RGB거리와 크게 다르지 않은 문제이다.

RGB거리 문제를 이해할 수 있다면 크게 어렵지 않게 이해할 수 있을 것이다.

https://everyyy.tistory.com/69 <-RGB거리 풀이

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
37
38
39
40
41
42
//#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
using namespace std;
 
int exMax(int num, pair<intint>** triangle);
 
int main() {
    int N;
    scanf("%d"&N);
    pair<intint>** triangle = new pair<intint>* [N + 1];
    for (int i = 0; i <= N; i++) {
        triangle[i] = new pair<intint>[N + 1];
        for (int j = 0; j < N + 1; j++)
            triangle[i][j].first = triangle[i][j].second = 0;
 
        for (int j = 1; j <= i; j++) {
            int num;
            scanf("%d"&num);
            triangle[i][j].first = num;
            triangle[i][j].second = num;
        }
    }
    printf("%d\n", exMax(N, triangle));
    for (int i = 0; i <= N; i++)
        delete[] triangle[i];
    delete[] triangle;
}
 
int exMax(int num, pair<intint>** triangle) {
    for (int i = 1; i <= num; i++)
        for (int j = 1; j <= i; j++)
            triangle[i][j].second += triangle[i - 1][j].second > triangle[i - 1][j - 1].second ? triangle[i - 1][j].second : triangle[i - 1][j - 1].second;
 
    int max = 0;
 
    for (int i = 1; i <= num; i++)
        if (max < triangle[num][i].second)
            max = triangle[num][i].second;
 
    return max;
}
cs

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/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
글 보관함