자이의 프로그래밍
combinationpascal 본문
문제
n명의 사람중 m명을 순서에 상관없이 뽑는 경우의 수를 조합이라고 하며 nCm으로 나타낸다.
이 조합은 파스칼의 삼각형과 아주 밀접한 관련이 있다고 한다.
n과 m이 주어졌을때 nCm의 값을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 정수 n, m(0 ≤ m ≤ n ≤ 30)이 들어온다.
출력
첫째 줄에 nCm의 값을 출력한다.
예제 입력
5 2
예제 출력
10
------------------------------------------------------------------------------------------------------------------------------
팩토리얼을 직접적으로 계산하지 않고 행렬에 파스칼의 삼각형을 그려서 해결했다.
#include <iostream>
using namespace std;
int main() {
int n, m;
int status[36][36] = { 0, };
cin >> n >> m;
for (int i = 0; i <= n; i++) {
for (int j = 0; j <= n; j++) {
if (i == j) {
status[i][j] = 1;
break;
}
else if (j == 0) {
status[i][0] = 1;
}
else {
status[i][j] = status[i - 1][j - 1] + status[i - 1][j];
}
}
}
cout << status[n][m];
return 0;
}
'Algorithm > Cases-BOJ' 카테고리의 다른 글
fibonacci (0) | 2020.07.05 |
---|---|
combinationzero (0) | 2020.07.05 |
chebyshevtheo (1) | 2020.07.05 |
beehive (0) | 2020.07.03 |
최대공약수와 최소공배수 (0) | 2020.06.20 |