백준 11050 이항 계수 1 C++
2023. 9. 23. 18:53ㆍ알고리즘문제 풀이/백준
문제
자연수 N\(N\)과 정수 K\(K\)가 주어졌을 때 이항 계수 (NK)\(\binom{N}{K}\)를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N\(N\)과 K\(K\)가 주어진다. (1 ≤ N\(N\) ≤ 10, 0 ≤ K\(K\) ≤ N\(N\))
출력
(NK)\(\binom{N}{K}\)를 출력한다.
내 풀이
조합론에서 이항 계수(binomial coefficient)는 이항식을 이항 정리로 전개했을 때 각 항의 계수이며, 주어진 크기의 (순서 없는)조합의 가짓수이다.
이항계수 알고리즘에는 다양한 종류가 있지만
이번 문제에서는
nCk = n-1Ck-1 + n-1Ck ( n >= k ,n >= 2, k >= 1)라는 성질을 이용하여 풀어보았다.
#include<iostream>
using namespace std;
int binomial(int n, int k) {
if (n < k) return 0;
if((n == 1)||(k == 0)) return 1;
return binomial(n - 1, k - 1) + binomial(n - 1, k);
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n, k;
cin >> n >> k;
cout << binomial(n, k) << '\n';
return 0;
}'알고리즘문제 풀이 > 백준' 카테고리의 다른 글
| 백준 11365 !밀비 급일 Python (0) | 2023.09.23 |
|---|---|
| 백준 11053 가장 긴 증가하는 부분 수열 C++ (0) | 2023.09.23 |
| 백준 11047 동전 0 C++ (0) | 2023.09.23 |
| 백준 11022 A+B - 8 C++ (0) | 2023.09.23 |
| 백준 11021 A+B - 7 C++ (0) | 2023.09.23 |