728x90
#include <iostream>
#include <algorithm>
#include <cstring>
#define INF 999999999
using namespace std;
int dp[70][70][70];
int n, a, b, c;
int func(int x, int y, int z) {
if (!x&&!y&&!z)return 0;
int &ret = dp[x][y][z];
if (ret != -1)return ret;
ret = INF;
ret = min(ret, func(max(0, x - 9), max(0, y - 3), max(0, z - 1)) + 1);
ret = min(ret, func(max(0, x - 9), max(0, y - 1), max(0, z - 3)) + 1);
ret = min(ret, func(max(0, x - 3), max(0, y - 9), max(0, z - 1)) + 1);
ret = min(ret, func(max(0, x - 1), max(0, y - 9), max(0, z - 3)) + 1);
ret = min(ret, func(max(0, x - 3), max(0, y - 1), max(0, z - 9)) + 1);
ret = min(ret, func(max(0, x - 1), max(0, y - 3), max(0, z - 9)) + 1);
return ret;
}
int main() {
memset(dp, -1, sizeof(dp));
cin>>n;
cin>>a>>b>>c;
cout<<func(a,b,c);
return 0;
}
'백준 > 다이나믹 프로그래밍' 카테고리의 다른 글
새로운 게임 (0) | 2021.02.25 |
---|---|
기타리스트 (0) | 2021.02.21 |
평범한 배낭 (0) | 2021.02.17 |
파일 합치기 (0) | 2021.01.22 |
1,2,3 더하기 4 (0) | 2021.01.21 |