2018년 4월 11일 수요일

[C++] Samsung SW Expert Academy 1226. [S/W 문제해결 기본] 7일차 - 미로1

/*

I faced segmentation fault at first, because I made map as int (int map[16][16])
but the input text was actually too long, so I changed it to 'string' type.




*/

#include <iostream>
#include <string>

using namespace std;

struct dot  {
int x;
    int y;
};
dot startP,endP;
string map[16];
int visit[16][16];
int dir[4][2] = {{0,1},{0,-1},{1,0},{-1,0}};
int find_flag;

void calc(int cur_x, int cur_y) {
if(visit[cur_y][cur_x] == 1) return;
    else {
    visit[cur_y][cur_x] = 1;
        if(map[cur_y][cur_x] == '1') return;
        else if (map[cur_y][cur_x] == '3') {
            find_flag = 1;
            return;
        }
       
        for(int i=0;i<4;i++) calc(cur_x+dir[i][0],cur_y+dir[i][1]);
    }
}


int main() {
for(int k=1;k<=10;k++) {
        int n;       
    cin >> n;
       
        for(int j=0;j<16;j++) {
            cin >> map[j];
        for(int i=0;i<16;i++) {
                visit[j][i] = 0;
                if(map[j][i] == '2') {
                startP.x = i;
                    startP.y = j;
                } else if (map[j][i] == '3') {
                endP.x = i;
                    endP.y = j;
                }
            }
        }
       
       
        find_flag = 0;
    calc(startP.x,startP.y);
       
        cout << "#" << k << " " << find_flag << endl;
   
    }
    return 0;
}

댓글 없음:

댓글 쓰기