No Rules Rules

신나는 함수 실행 (feat. 백준, 9184번) 본문

생활/코테

신나는 함수 실행 (feat. 백준, 9184번)

개발하는 완두콩 2022. 8. 5. 22:21
728x90
반응형

신나는 함수 실행
https://www.acmicpc.net/problem/9184

 

9184번: 신나는 함수 실행

입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다.

www.acmicpc.net

반응형
// woohyeon.kim
// https://www.acmicpc.net/problem/9184
#include <iostream>
using namespace std;
int dp[51][51][51];
int main() {
	ios::sync_with_stdio(false), cin.tie(NULL);
	for (register int i = 0, j, k; i <= 50; ++i)
		for (j = 0; j <= 50; ++j)
			for (k = 0; k <= 50; ++k)
				dp[i][j][k] = 1;
	for (register int i = 1, j, k; i <= 20; ++i)
		for (j = 1; j <= 20; ++j)
			for (k = 1; k <= 20; ++k)
				if (i < j && j < k)	dp[i][j][k] = dp[i][j][k - 1] + dp[i][j - 1][k - 1] - dp[i][j - 1][k];
				else			dp[i][j][k] = dp[i - 1][j][k] + dp[i - 1][j - 1][k] + dp[i - 1][j][k - 1] - dp[i - 1][j - 1][k - 1];
	register int a, b, c;
	while (true) {
		cin >> a >> b >> c;
		if (a == -1 && b == -1 && c == -1)
			break;
		if (a < 1 || b < 1 || c < 1)
			printf("w(%d, %d, %d) = 1\n", a, b, c);
		else if (a > 20 || b > 20 || c > 20)
			printf("w(%d, %d, %d) = 1048576\n", a, b, c);
		else
			printf("w(%d, %d, %d) = %d\n", a, b, c, dp[a][b][c]);
	}
	return 0;
}
// *&)*@*
  1. 문제의 조건에 따라 풀이를 하면 됩니다.
  2. 최초 모든 값에 1을 입력하고 1~20까지의 모든 dp를 구한 뒤, 주어진 문제에 맞는 배열을 출력하면 됩니다.
728x90
반응형
Comments