Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

자이의 프로그래밍

combinationpascal 본문

Algorithm/Cases-BOJ

combinationpascal

Xi_kor 2020. 7. 5. 17:09

문제

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