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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | #include <stdio.h> int arr[30][30] = { 0 }; int r, c, rstLen = 0; int visit[100] = { 0 }; void DFS(int y, int x, int len); int main() { scanf("%d %d", &r, &c); for (int i = 0; i < r; i++) { char str[50]; scanf("%s", str); for (int j = 0; j < 50; j++) { if (str[j] == '\0') break; else arr[i][j] = (int)(str[j] - 'A'+1); } } visit[arr[0][0]] = 1; DFS(0, 0, 1); printf("%d", rstLen); } void DFS(int y, int x, int len) { if (len > rstLen) { rstLen = len; } if (y - 1 >= 0) { int alpha = arr[y - 1][x]; if (visit[alpha] == 0) { visit[alpha] = 1; DFS(y - 1, x, len + 1); visit[alpha] = 0; } } if (y + 1 < r) { int alpha = arr[y + 1][x]; if (visit[alpha] == 0) { visit[alpha] = 1; DFS(y + 1, x, len + 1); visit[alpha] = 0; } } if (x - 1 >= 0) { int alpha = arr[y][x-1]; if (visit[alpha] == 0) { visit[alpha] = 1; DFS(y, x - 1, len + 1); visit[alpha] = 0; } } if (x + 1 < c) { int alpha = arr[y][x+1]; if (visit[alpha] == 0) { visit[alpha] = 1; DFS(y, x + 1, len + 1); visit[alpha] = 0; } } } | cs |
'알고리즘 > DFS' 카테고리의 다른 글
| 11376 열혈강호2 (0) | 2019.08.20 |
|---|---|
| 11375 열혈강호 (0) | 2019.08.20 |
| 1389 케빈 베이컨의 6단계 법칙 (0) | 2019.08.01 |
| 6603 로또 (0) | 2019.07.31 |
| 2583 영역 구하기 (0) | 2019.07.30 |