https://www.acmicpc.net/problem/1405
백준 1405번 미친로봇
1405번: 미친 로봇
첫째 줄에 N, 동쪽으로 이동할 확률, 서쪽으로 이동할 확률, 남쪽으로 이동할 확률, 북쪽으로 이동할 확률이 주어진다. N은 14보다 작거나 같은 자연수이고, 모든 확률은 100보다 작거나 같은 자연수 또는 0이다. 그리고, 동서남북으로 이동할 확률을 모두 더하면 100이다.
www.acmicpc.net
목적
로봇의 이동경로가 단순(방문한 곳을 재방문 하지 않음)할 확률을 구하자.
접근법
1. 완전탐색 알고리즘으로,동서남북 네 방향으로 이동할 수 있는 모든 경우에 해당하는 확률의 합을 구한다.
*주의 : cout.precision(10); 코드를 사용하여 문제 조건에 해당하는 오차 범위로 변경해주자.
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
|
#include<iostream>
using namespace std;
bool b[30][30]={};
int di[]={0,0,1,-1},dj[]={1,-1,0,0};
double p[4];
double calc(int i,int j, int n){
if(b[i][j])return 0;
if(n==0)return 1;
b[i][j]=true;
double ret=0;
for(int k=0;k<4;++k)ret+=(p[k]*calc(i+di[k],j+dj[k],n-1));
b[i][j]=false;
return ret;
}
int main(){
int n;cin>>n;
for(int i=0;i<4;++i){
int tmp;cin>>tmp;
p[i]=(double)tmp/100;
}
cout.precision(10);
cout<<calc(15,15,n);
}
|
'Problem Solving > BOJ 백준' 카테고리의 다른 글
[ BOJ 백준 2339번 - 석판 자르기 ] 해설 및 코드 (0) | 2019.12.08 |
---|---|
[ BOJ 백준 11729번 - 하노이 탑 이동 순서 ] 해설 및 코드 (0) | 2019.12.08 |
[ BOJ 백준 17136번 - 색종이 붙이기 ] 해설 및 코드 (0) | 2019.12.08 |
[ BOJ 백준 1035번 - 조각 움직이기 ] 해설 및 코드 (0) | 2019.12.08 |
[ BOJ 백준 1339번 - 단어 수학 ] 해설 및 코드 (0) | 2019.12.08 |