https://www.acmicpc.net/problem/1405
#include <iostream>
#define fastio() ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;
long double N, w[4]; // 동, 서, 남, 북
int visited[30][30]; // 방문 여부 확인
int dy[4] = {0, 0, 1, -1}; // 동서남북
int dx[4] = {1, -1, 0, 0}; // 동서남북
long double track(int y, int x, long double p, int cnt) {
if (cnt == N or p == 0) return p; // 모두 이동 or 확률 0
long double sum = 0; // 동서남북의 총 확률 계산
for (int i = 0; i < 4; i++) {
if (visited[y + dy[i]][x + dx[i]]) continue; // 이미 방문한 곳이면 넘어간다
visited[y + dy[i]][x + dx[i]]++; // 방문했음
sum += track(y + dy[i], x + dx[i], p * w[i], cnt + 1);
visited[y + dy[i]][x + dx[i]]--; // 방문안함
}
return sum;
}
int main() {
fastio(); cin >> N >> w[0] >> w[1] >> w[2] >> w[3];
for (int i = 0; i < 4; i++) w[i] /= 100; // 확률
visited[15][15]++; // 중간에서 시작한다
cout.precision(10);
cout << track(15, 15, 1, 0); // 중간에서 시작한다
return 0;
}
|
fcs |
00 : 13 : 56
'백준(C, C++) > 골드' 카테고리의 다른 글
백준 12904: A와 B [C/C++] (0) | 2022.06.27 |
---|---|
백준 2015: 수들의 합 4 [C/C++] (0) | 2022.06.16 |
백준 1744: 수 묶기 [C/C++], 다이나믹 프로그래밍 (0) | 2022.06.15 |
백준 2668: 숫자 고르기 [C언어], 정보올림피아드 (0) | 2022.06.15 |
백준 17070: 파이프 옮기기 1 [C/C++], 삼성 코딩 테스트 (0) | 2022.06.13 |