본문 바로가기
온라인저지

[BOJ] 1987번: 알파벳

by plzfday 2018. 7. 26.

https://www.acmicpc.net/problem/1987

예전에 풀었는데 놀랍게도 풀이를 적지 않았나 보다..

DFS에 백트래킹을 섞어주면 된다.

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
#include <cstdio>
 
char board[21][21];
bool al[26];
int R, C, count = -987654321;
 
const int dx[] = { -110}, dy[] = { 00-1};
 
bool is_safe(int y, int x) {
    return (<= y && y < R && <= x && x < C);
}
 
void search(int y, int x, int cnt) {
    if (cnt > count) count = cnt;
    al[board[y][x] - 'A'= true;
    for (int i = 0; i < 4++i) {
        int nextY = y + dy[i], nextX = x + dx[i];
        if (is_safe(nextY, nextX) && !al[board[nextY][nextX] - 'A'])
            search(nextY, nextX, cnt + 1);
    }
    al[board[y][x] - 'A'= false;
}
 
int main()
{
    scanf("%d %d"&R, &C);
    for (int i = 0; i < R; ++i) scanf("%s", board[i]);
    search(001);
    printf("%d\n", count);
    return 0;
}


'온라인저지' 카테고리의 다른 글

[BOJ] 2440번: 별찍기 - 3  (0) 2018.07.26
[BOJ] 2441번: 별찍기 - 4  (0) 2018.07.26
[BOJ] 2442번: 별찍기 - 5  (0) 2018.07.26
[BOJ] 3034번: 앵그리 창영  (0) 2018.07.26
[BOJ] 3035번: 스캐너  (0) 2018.07.26
[BOJ] 3036번: 링  (0) 2018.07.26

댓글