반응형
SMALL
본 문제는 swexpertacademy D4. 1226 문제이며 히하15님의 코드를 보고 배웠음을 알리며 히하15님이 이 글을 본다면 감사의 의미를 전하고 싶으니 쪽지 부탁드립니다.
미로의 기본적인 문제이며 미로를 입력받고 출발점과 끝점을 저장한다. 그 후 지나온 길을 표시하고 갈 수 있는 길에 대해 상하좌우를 탐색하며 미로를 찾는다.
#include<iostream>
using namespace std;
char maze[16][16];
int visit[16][16];
int dx[4] = {0,0,-1,1};
int dy[4] = {-1,1,0,0};
int entry_x, entry_y, exit_x, exit_y;
int sol;
bool check(int y, int x){
if(y>=0&&y<16&&x>=0&&x<16&&maze[y][x]!='1'&&!visit[y][x])
return true;
return false;
}
void dfs(int y, int x){
if(y==exit_y&&x==exit_x){
sol=1;
return;
}
int ny, nx;
for(int i=0; i<4; i++){
ny=y+dy[i];
nx=x+dx[i];
if(check(ny, nx)){
visit[ny][nx] = 1;
dfs(ny, nx);
}
}
}
void init(){
sol=0;
for(int i=0; i<16; i++){
for(int j=0; j<16; j++){
visit[i][j]=0;
}
}
}
int main(){
int T=0;
for(int t=1; t<=10; t++){
cin>>T;
for(int i=0; i<16; i++) {
for(int j=0; j<16; j++){
cin>>maze[i][j];
if(maze[i][j] == '2'){
entry_y = i;
entry_x = j;
}
else if(maze[i][j] == '3'){
exit_y = i;
exit_x = j;
}
}
}
visit[entry_y][entry_x] = 1;
dfs(entry_y, entry_x);
cout<<"#"<<t<<" "<<sol<<endl;
init();
}
return 0;
}
반응형
LIST
'코딩스터디' 카테고리의 다른 글
핵맨 게임 C++로 만들기 (0) | 2019.05.18 |
---|---|
1231. [S/W 문제해결 기본] 9일차 - 중위순회 (0) | 2019.05.15 |
6808. 규영이와 인영이의 카드게임 (0) | 2019.05.13 |
1206. [S/W 문제해결 기본] 1일차 - View (0) | 2019.05.13 |
7102. 준홍이의 카드놀이 (0) | 2019.05.12 |