The Way

백준 1010번: 다리 놓기 본문

PS/백준 온라인 저지

백준 1010번: 다리 놓기

Jeonggyun 2018. 2. 21. 15:12

백준 온라인 저지(BOJ) 1010번 문제

https://www.acmicpc.net/problem/1010



1. 문제 요약

강의 서쪽에 N개, 강의 동쪽에 M개의 구역이 있다. (N <= M)

구역끼리 1대 1로, 다리끼리 겹쳐지지 않게 다리를 지을 때 가능한 경우의 수는?



2. 알고리즘

강의 동쪽에 있는 M개의 구역 중 N개를 고르는 경우의 수를 구하는 문제이다. 당연히 조합이다.



3. 코드

#include <iostream>

long long c(int n, int r) {
	static long long mem[30][30] = { 0 };
	if (mem[n][r] > 0) return mem[n][r];
	if (r == 0 || n == r) return mem[n][r] = 1;
	return mem[n][r] = c(n - 1, r - 1) + c(n - 1, r);
}

int main() {
	int T;
	scanf("%d", &T);
	for (int i = 0; i < T; ++i) {
		int N, M;
		scanf("%d %d", &N, &M);
		printf("%lld\n", c(M, N));
	}

	return 0;
}


'PS > 백준 온라인 저지' 카테고리의 다른 글

백준 2752번: 세수정렬  (0) 2018.02.21
백준 2884번: 알람 시계  (0) 2018.02.21
백준 1181번: 단어 정렬  (2) 2018.02.21
백준 1297번: TV 크기  (0) 2018.02.19
백준 2914번: 저작권  (0) 2018.02.19
Comments