https://www.acmicpc.net/problem/1010
1010번: 다리 놓기
입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다.
www.acmicpc.net
다리 놓기 문제
다리는 중복될 수 없고 최대한 놓을 수 있는 경우의 수를 구하는 문제입니다.
M개의 다리중에서 중복을 제외한 N개의 다리를 선택하는 조합 문제입니다.
조합 특성을 사용해 재귀함수로 풀었습니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int test_case = scan.nextInt();
for(int j = 1; j<=test_case; j++) {
int r = scan.nextInt();
int n = scan.nextInt();
System.out.println(func(n, r));
}
}
public static int func(int n, int r) {
if(r == 0 || r == n)
return 1;
if(r == 1)
return n;
else {
return func(n-1, r) + func(n-1, r-1);
}
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[BaekJoon] 백준 2839번 설탕배달(자바) (0) | 2020.09.15 |
---|---|
[BaekJoon] 백준 2748번 피보나치 수 (0) | 2020.09.15 |
[BaekJoon] 백준 2775. 부녀회장이 될테야 (0) | 2020.09.14 |
[BaekJoon] 14899 백준 스타트와 링크 (0) | 2020.06.04 |
[BaekJoon] 14892 백준 톱니바퀴 (0) | 2020.05.31 |