느낌이 딱!!!!봐도 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, 0, sizeof(charge)); memset(month, 0, sizeof(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(1, 0); printf("#%d %d\n",i, MIN); } return 0; } | cs |
'SW 업무 관련 > SW Expert Academy' 카테고리의 다른 글
1949. [모의 SW 역량테스트] 등산로 조성 (0) | 2018.08.09 |
---|---|
1859. 백만 장자 프로젝트 (0) | 2018.08.08 |
[S/W 문제해결 기본] 5일차 - GNS (0) | 2018.08.05 |
1289. 원재의 메모리 복구하기 (0) | 2018.08.02 |
1220. [S/W 문제해결 기본] 5일차 - Magnetic (0) | 2018.07.31 |