Skip to content

Commit 8c99aa3

Browse files
authored
Merge pull request #1947 from AlgorithmWithGod/JHLEE325
[20260219] BOJ / G4 / 미친 로봇 / 이준희
2 parents 1640b18 + c2abc1e commit 8c99aa3

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
```java
2+
import java.io.*;
3+
import java.util.*;
4+
5+
public class Main {
6+
7+
static int N;
8+
static double[] probs = new double[4];
9+
static boolean[][] visited = new boolean[30][30];
10+
static int[] dr = {0, 0, 1, -1};
11+
static int[] dc = {1, -1, 0, 0};
12+
static double totalProb = 0;
13+
14+
public static void main(String[] args) throws IOException {
15+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
16+
StringTokenizer st = new StringTokenizer(br.readLine());
17+
18+
N = Integer.parseInt(st.nextToken());
19+
for (int i = 0; i < 4; i++) {
20+
probs[i] = Integer.parseInt(st.nextToken()) * 0.01;
21+
}
22+
23+
visited[15][15] = true;
24+
dfs(15, 15, 0, 1.0);
25+
26+
System.out.println(totalProb);
27+
}
28+
29+
static void dfs(int r, int c, int cnt, double currentProb) {
30+
if (cnt == N) {
31+
totalProb += currentProb;
32+
return;
33+
}
34+
35+
for (int i = 0; i < 4; i++) {
36+
if (probs[i] == 0) continue;
37+
38+
int nr = r + dr[i];
39+
int nc = c + dc[i];
40+
41+
if (!visited[nr][nc]) {
42+
visited[nr][nc] = true;
43+
dfs(nr, nc, cnt + 1, currentProb * probs[i]);
44+
visited[nr][nc] = false;
45+
}
46+
}
47+
}
48+
}
49+
```

0 commit comments

Comments
 (0)