VioletaBabel
챕터11_섹션1_탐욕 알고리즘 본문
#include <cstdio>
int main()
{
int t, e, f, realMem, n, mem[10001], *appTime, *appMem;
scanf("%d", &t);
for (int i = 0; i < t; ++i)
{
for (int j = 1; j < 10001; ++j)
mem[j] = 500000000;
mem[0] = 0;
scanf("%d %d %d", &e, &f, &n);
realMem = f - e;
appTime = new int[n];
appMem = new int[n];
for (int j = 0; j < n; ++j)
scanf("%d %d", &appTime[j], &appMem[j]);
for (int j = 0; j < n; ++j)
for (int k = 0; k <= realMem; ++k)
if (mem[k] + appTime[j] < mem[k + appMem[j]])
mem[k + appMem[j]] = mem[k] + appTime[j];
delete[] appTime;
delete[] appMem;
(mem[realMem] == 500000000) ? printf("-1") : printf("스마트폰의 최소 실행 시간 : %d\n", mem[realMem]);
}
}
'알고리즘문제들 > 알고리즘문제풀이전략_문제' 카테고리의 다른 글
챕터10_섹션8_재귀 호출로 최대공약수 구하기 (0) | 2017.05.19 |
---|---|
챕터10_섹션7_지그재그 숫자 출력하기 (0) | 2017.05.19 |
챕터10_섹션6_소수 구하기 (0) | 2017.05.19 |
챕터10_섹션5_임의의 숫자 배수의 개수와 합 구하기 (0) | 2017.05.16 |
챕터10_섹션4_피보나치 수열 (0) | 2017.05.16 |
Comments