본문 바로가기

알고리즘 풀이

백준 1987번 알파벳

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


#include <iostream>
#include <cmath>
using namespace std;
char board[20][20] = {0, };
bool step[26] = {0, };
int row, col, answer = 1;
int dx[4] = {0, -1, 0, 1};
int dy[4] = {-1, 0, 1, 0};
bool isInner(int x, int y) {
return (x >= 0 && x < row && y >= 0 && y < col);
}
void move(int depth, int x, int y) {
answer = answer > depth ? answer : depth;
for (int i = 0; i < 4; ++i) {
int newX = x + dx[i];
int newY = y + dy[i];
if (isInner(newX, newY) &&
!step[board[newX][newY] - 'A']) {\
step[board[newX][newY] - 'A'] = true;
move(depth + 1, newX, newY);
step[board[newX][newY] - 'A'] = false;
}
}
}
int main()
{
int result = 0;
scanf("%d %d", &row, &col);
for (int i = 0 ; i < row; ++i) {
scanf("%s", &board[i]);
}
step[board[0][0] - 'A'] = true;
move(1, 0, 0);
printf("%d\n", answer);
return 0;
}


'알고리즘 풀이' 카테고리의 다른 글

백준 10942번 팰린드롬?  (0) 2018.01.22
백준 6603번 로또  (0) 2018.01.15
백준 2294번 동전2  (0) 2018.01.08
백준 2667번 단지번호붙이기  (0) 2018.01.05
백준 2609번 최대공약수 최소공배수  (0) 2018.01.01