1952. [모의 SW 역량테스트] 수영장

SW 업무 관련/SW Expert Academy

1952. [모의 SW 역량테스트] 수영장

WillBe_ 2018. 8. 5. 20:28


느낌이 딱!!!!봐도 DP인데...


모든 조합을 따져봐도 3^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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <stdio.h>
#include <string.h>
 
int charge[4];
int month[13];
int MIN;
 
void search(int M, int T)
{
    if (M >= 13)
    {
        if (T < MIN)
        {
            MIN = T;
        }
        return;
    }
 
    int K = 0;
    for (int i = 0; i < 4; i++)
    {
        switch (i)
        {
        case 0:
            K = month[M] * charge[0];
            search(M + 1, T + K);
            break;
        case 1:
            K = charge[1];
            search(M + 1, T + K);
            break;
        case 2:
            if (M > 10)
                break;
            K = charge[2];
            search(M + 3, T + K);
            break;
        case 3:
            if (M > 2)
                break;
            K = charge[3];
            search(M + 12, T + K);
            break;
        }
    }
    return;
}
 
int main()
{
    int Test;
    scanf("%d"&Test);
 
    for (int i = 1; i <= Test; i++)
    {
        memset(charge, 0sizeof(charge));
        memset(month, 0sizeof(month));
        MIN = 99999999;
 
        for (int j = 0; j < 4; j++)
        {
            scanf("%d"&charge[j]);
        }
 
        for (int j = 1; j <= 12; j++)
        {
            scanf("%d"&month[j]);
        }
 
        search(10);
 
        printf("#%d %d\n",i, MIN);
    }
    return 0;
}
cs