반응형
[광고 누르면 오늘의 행운 상승!!]
https://www.acmicpc.net/problem/1405
DFS 확률 문제
1. N이 최대 14까지 나오므로 30개의 맵을 선언한다.
2. 14,14좌표에서 DFS를 시작한다.
3. DFS를 나아가면서 PERCENT끼리 곱해간다 (확률의 곱셈)
4. CNT == N일때 이동거리를 모두 소모했으므로 PERCENT를 최종ans에 더한다.
5. 모두 더해진 ans를 출력한다.
package Study2;
import java.io.*;
import java.util.*;
public class 미친로봇 {
public static int[] dx = {0,0,1,-1};
public static int[] dy = {1,-1,0,0};
public static double dir[];
public static boolean visit[][];
public static int N;
public static double ans;
public static void main(String[] args) throws Exception{
System.setIn(new FileInputStream("test.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()," ");
N = Integer.parseInt(st.nextToken());
dir = new double[4];
visit = new boolean[30][30];
for (int i = 0; i < 4; i++) {
dir[i] = Integer.parseInt(st.nextToken()) * 0.01;
}
visit[14][14] = true;
dfs(14,14,0,1.0);
System.out.println(ans);
}
private static void dfs(int row, int col, int cnt, double percent) {
if(cnt == N) {
ans += percent;
return;
}
for (int i = 0; i < 4; i++) {
if(dir[i] == 0) continue;
int nx = row + dx[i];
int ny = col + dy[i];
if(!visit[nx][ny]) {
visit[nx][ny] = true;
dfs(nx,ny,cnt + 1 ,dir[i] * percent);
visit[nx][ny] = false;
}
}
}
}
반응형
'2. 알고리즘사이트 > 1. 백준' 카테고리의 다른 글
트리의 부모찾기 [백준 11725][JAVA][실버 2] (0) | 2020.04.03 |
---|---|
아기 상어 [백준 16236][JAVA][골드 5][BFS][시뮬레이션][PQ] (0) | 2020.04.01 |
입국심사 [백준 3079][Java][이분탐색] (0) | 2020.03.30 |
움직이는 미로 탈출 [백준 16954][Java][BFS] (0) | 2020.03.30 |
거울 설치 [백준 2151][JAVA][골드5][시뮬레이션][BFS][DP] (0) | 2020.03.24 |