새소식

알고리즘/문제 풀이

[C++] 백준 9184 - 신나는 함수 실행

  • -

https://0041lntc.tistory.com/3

 

[C++] 백준 9184 - 신나는 함수 실행

https://www.acmicpc.net/problem/9184 9184번: 신나는 함수 실행 입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의

0041lntc.tistory.com

상세 설명은 이전 블로그에 작성한 아티클을 참고하기 바란다.

#include <iostream>

int w(int a, int b, int c);

int dp[21][21][21];
int main()
{
    int a = 0;
    int b = 0;
    int c = 0;
    while (true)
    {
        std::cin >> a >> b >> c;
        if (a == -1 && b == -1 && c == -1)
            break;
        printf("w(%d, %d, %d) = %d\n", a, b, c, w(a, b, c));
    }

    return 0;
}

int w(int a, int b, int c)
{
    static int dp[21][21][21]{};
    if (a <= 0 || b <= 0 || c <= 0)
        return 1;

    else if (a > 20 || b > 20 || c > 20)
        return w(20, 20, 20);
    
    else if (dp[a][b][c] != 0)
        return dp[a][b][c];

    else if (a < b && b < c)
        dp[a][b][c] = w(a, b, c - 1) + w(a, b - 1, c - 1) - w(a, b - 1, c);
        
    else
        dp[a][b][c] = w(a - 1, b, c) + w(a - 1, b - 1, c) + w(a - 1, b, c - 1) - w(a - 1, b - 1, c - 1);

    return dp[a][b][c];
}

'알고리즘 > 문제 풀이' 카테고리의 다른 글

[C#] 프로그래머스 131705 - 삼총사  (1) 2023.04.17
[C#] GuguClass 한 줄로 구현하기  (0) 2023.04.10
[C++] 백준 1904 - 01타일  (0) 2023.01.10
[C++] 백준 1629 - 곱셈  (0) 2023.01.10
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.