이항계수 식의 팩토리얼을 이용하여 푸는 문제.
재귀를 이용하여 풀었다. 다중에 다시 봐야할 문제 같다..
재귀에 더 많은 이해를 한 뒤에 접근해야 할 것 같다. 재귀의 접근방식이 아직 익숙하지 않다.
#include <iostream>
#include <ctime>
using namespace std;
int Dynamic(int n, int k)
{
int dp[40][40] = { 0, };
if (dp[n][k] > 0)
{
return dp[n][k];
}
if (k == 0 || n == k)
{
dp[n][k] = 1;
return dp[n][k];
}
return Dynamic(n - 1, k - 1) + Dynamic(n - 1, k);
}
//int Dynamic(int n, int k)
//{
// if (k == 0 || n == k)
// {
// return 1;
// }
// return Dynamic(n - 1, k - 1) + Dynamic(n - 1, k);
//}
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n, k;
cin >> n >> k;
cout << Dynamic(n, k);
return 0;
}