#include <iostream> #include <algorithm> #include <string.h> using namespace std; int N, M; int dp[310]; int solve(int n, int m) { if(n == 1) { return m-1; } if(dp[n] != 0) { return dp[n]; } if(n % 2 == 0) { dp[n] += solve(n/2, m) + solve(n/2, m) + 1; } else { dp[n] += solve(n/2, m) + solve(n/2+1, m) + 1; } return dp[n]; } int main(void) { // freopen("B2163_input.txt", "r", stdin); cin >> N >> M; cout << solve(N, M); return 0; } | cs |
'Baekjoon > DP' 카테고리의 다른 글
[백준 9252] LCS 2 (DP) (C/C++) (★★★) (0) | 2020.03.16 |
---|---|
[백준 9251] LCS (DP) (C/C++) (0) | 2020.03.16 |
[백준 1010] 다리 놓기 (DP) (C/C++) (0) | 2020.03.15 |
[백준 1149] RGB 거리 (DP) (C/C++) (★) (0) | 2020.03.15 |
[백준 1932] 정수 삼각형 (DP) (C/C++) (0) | 2020.03.15 |