| #include <iostream> using namespace std; | |
| int map[100][100]; | |
| bool visit[100][100]; | |
| int dy[3]={0, 0, 1}; | |
| int dx[3]={-1, 1, 0}; | |
| int dfs(int y, int x, int depth) | |
| { | |
| for(int i=0; i<3; i++) | |
| { | |
| visit[y][x]=1; | |
| int ny=y+dy[i]; | |
| int nx=x+dx[i]; | |
| if(ny==99) {return depth;} | |
| if(nx>=0 && nx<100 && ny>=0 && ny<100 & map[ny][nx] && !visit[ny][nx]) | |
| { return dfs(ny,nx, depth+1);} | |
| visit[y][x]=0; | |
| } | |
| } | |
| int main() | |
| { | |
| for(int T=1; T<=10; T++) | |
| { | |
| int bin; | |
| int min_i; | |
| cin >> bin; | |
| cout << "#" << T <<" "; | |
| for(int i=0; i<100; i++) | |
| for(int j=0; j<100; j++) | |
| cin >> map[i][j]; | |
| int min=10000; | |
| for(int i=99; i>=0; i--) | |
| { | |
| /*initialize*/ | |
| for(int j=0; j<100; j++) | |
| for(int k=0; k<100; k++) | |
| { visit[j][k]=0; } | |
| if(map[0][i]) | |
| { | |
| int cnt= dfs(0, i, 0); | |
| if(min>cnt) { min=cnt; min_i=i;} | |
| } | |
| } | |
| cout << min_i << endl; | |
| } | |
| } |
'알고리즘 문제 풀이 > 1DP_과제(~180615)' 카테고리의 다른 글
| 171122_1949_등산로 조성 (0) | 2017.11.22 |
|---|---|
| 171121_1218_괄호 짝짓기 (0) | 2017.11.22 |
| 171120_1210_Ladder1 (0) | 2017.11.20 |
| 171120_1389_케빈 베이컨의 6단계 법칙 (0) | 2017.11.20 |
| 171119_11724_연결 요소의 개수 (0) | 2017.11.19 |