본문 바로가기
Computer Science

Dynamic programming

by OKOK 2019. 1. 16.

1. dp 사용법

2. 오케이

3. 글로 쓰는 것

4. 이렇게 풀이 하는 것

5. 완전 기본 형태 접수 


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
43
44
45
46
47
48
49
50
51
52
#include<stdio.h>
 
#define MAX_N 6
int N;
int dp[2][MAX_N];
int board[2][MAX_N];
 
const int max(const int a, const int b) {
    return (a < b) ? b : a;
}
 
void findSticker() {
    dp[0][0= board[0][0];
    dp[1][0= board[1][0];
    dp[0][1= dp[1][0+ board[0][1];
    dp[1][1= dp[0][0+ board[1][1];
 
    for (int i = 2; i < N; i++)
    {
        dp[0][i] = max(dp[0][i - 2], dp[1][i - 2]);
        dp[0][i] = max(dp[1][i - 1], dp[0][i]);
        dp[0][i] += board[0][i];
 
        dp[1][i] = max(dp[0][i - 2], dp[1][i - 2]);
        dp[1][i] = max(dp[0][i - 1], dp[1][i]);
        dp[1][i] += board[1][i];
    }
}
 
int main()
{
    freopen("input.txt""r", stdin);
    int T;
    scanf("%d"&T);
 
    for (int test_case = 1; test_case <= T; test_case++)
    {
        printf("#%d ", test_case);
        scanf("%d"&N);
        for (int j = 0; j < 2; j++)
        {
            for (int i = 0; i < N; i++)
            {
                scanf("%d"&board[j][i]);
            }
        }
        findSticker();
        printf("%d\n", max(dp[0][N - 1], dp[1][N - 1]));
    }
 
    return 0;
}
cs

 


'Computer Science' 카테고리의 다른 글

DFS Algo  (0) 2019.01.16
Permutation & Combination  (0) 2019.01.16
BFS queue  (0) 2019.01.15
Deque  (0) 2019.01.14
Linked List  (0) 2019.01.14

댓글