www.acmicpc.net/problem/1987

 

1987번: 알파벳

세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으

www.acmicpc.net

풀이 생략

더보기
#include <iostream>
using namespace std;
int arr[21][21];
int ch[21][21];
int n, m;
int chc[26];
int mx = -2100000000;
void r(int x, int y, int cnt) {
	if (x < 1 || x > n || y < 1 || y > m) return;
	if (chc[arr[x][y]] == 1 || ch[x][y] == 1) return;

	chc[arr[x][y]] = 1;
	ch[x][y] = 1;	
	r(x + 1, y, cnt + 1);
	r(x, y + 1, cnt + 1);
	r(x - 1, y, cnt + 1);
	r(x, y - 1, cnt + 1);
	chc[arr[x][y]] = 0;
	ch[x][y] = 0;

	mx = cnt > mx ? cnt : mx;
}

int main()
{
	cin >> n >> m;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			char a;
			cin >> a;
			arr[i][j] = a - 65;
		}
	}

	r(1, 1, 1);

	cout << mx;

	return 0;
}