a, b가 주어지면 a층 b호에 사는 주민의 수를 구하는 문제
설명 생략
점화식을 세워서 풀었다.
d[a][b] = d[a-1][b] + d[a][b-1]
a층 b호에사는 주민의 숫자는 이전의 호수 즉 a층 b-1호에 사는 주민의 수와 a-b층 b호에 사는 주민의 수를 합한 것과 같습니다.
(단, 1호일 경우 a-1층의 1호에 사는 주민의 수와 같다)
재귀를 사용하여 문제를 풀었습니다.
import java.util.Scanner;
public class main {
static int[][] d;
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 n = scan.nextInt();
int i = scan.nextInt();
d = new int[n+1][i+1];
for(int k = 1; k<=i; k++) {
d[0][k] = k;
}
func(n, i);
System.out.println(d[n][i]);
}
}
public static int func(int n, int i) {
if(d[n][i] != 0) {
return d[n][i];
}
else {
if(i == 1) {
d[n][i] = func(n-1, i);
}
else {
d[n][i] = func(n, i-1) + func(n-1, i);
}
return d[n][i];
}
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[BaekJoon] 백준 2748번 피보나치 수 (0) | 2020.09.15 |
---|---|
[BaekJoon] 백준 1010번 다리놓기 (0) | 2020.09.14 |
[BaekJoon] 14899 백준 스타트와 링크 (0) | 2020.06.04 |
[BaekJoon] 14892 백준 톱니바퀴 (0) | 2020.05.31 |
[BaekJoon] 백준 14890 경사로 (0) | 2020.05.30 |