반응형
재귀를 이용하여 분할정복하는 문제이다.
func(int i, int j, int size) 함수를 이용하여 size==1이 될때까지 계속 호출하는 형태로 재귀를 반복하게 된다. 기저조건은 size가 1이 될때 cnt++를 해주고 return을 한다. 재귀는 Z모양으로 4번을 호출하게 된다.
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
32
33
34
35
36
37
38
39
40
41
|
package chap06;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main_bj_1074_Z {
static int R,C;
static int cnt;
public static void main(String[] args) throws Exception {
BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N=Integer.parseInt(st.nextToken());
R=Integer.parseInt(st.nextToken());
C=Integer.parseInt(st.nextToken());
int size=1<<N;
func(0,0,size);
}
static void func(int i,int j, int size) {
if(size==1) { //확인
if(i==R && j==C)
System.out.println(cnt);
// System.out.println(i+ " ," +j + "== " +cnt);
cnt++;
return;
}
size=size/2;
func(i,j,size);
func(i,j+size,size);
func(i+size,j,size);
func(i+size,j+size,size);
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
반응형
'Algorithm' 카테고리의 다른 글
[BOJ] 2447. 별 찍기-10 (0) | 2020.03.23 |
---|---|
[BOJ] 2448. 별 찍기-11 (0) | 2020.03.23 |
[BOJ] 11729. 하노이 탑 이동 순서 (0) | 2020.03.22 |
[BOJ] 1629. 곱셈 (0) | 2020.03.22 |
[BOJ] 2146. 다리 만들기 (0) | 2020.03.21 |