-
[9184] 신나는 함수 실행BOJ 2021. 10. 8. 22:41
https://www.acmicpc.net/problem/9184
9184번: 신나는 함수 실행
입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다.
www.acmicpc.net
<문제>
메모이제이션을 사용해보라는 문제로 생각된다. 의사코드를 문제에서 제공했기에, 그대로 옮겨주면 된다.
<소스코드>
12345678910111213141516171819202122#include <bits/stdc++.h>using namespace std;int memo[51][51][51];int f(int a, int b, int c) {if (a <= 0 || b <= 0 || c <= 0) return 1;if (a > 20 || b > 20 || c > 20) return f(20, 20, 20);if (memo[a][b][c] != 0) return memo[a][b][c];if (a < b && b < c)return memo[a][b][c] =f(a, b, c - 1) + f(a, b - 1, c - 1) - f(a, b - 1, c);return memo[a][b][c] = f(a - 1, b, c) + f(a - 1, b - 1, c) +f(a - 1, b, c - 1) - f(a - 1, b - 1, c - 1);}int main(void) {while (1) {int x, y, z;cin >> x >> y >> z;if (x == -1 && y == -1 && z == -1) break;printf("w(%d, %d, %d) = %d\n", x, y, z, f(x, y, z));}return 0;}cs 'BOJ' 카테고리의 다른 글
[7785] 회사에 있는 사람 (0) 2021.10.09 [1062] 가르침 (0) 2021.10.09 [14456] Hoof, Paper, Scissors (Bronze) (0) 2021.10.08 [12851] 숨바꼭질 2 (0) 2021.10.08 [13549] 숨바꼭질 3 (0) 2021.10.08