[BOJ/C++/1987] 알파벳

Mongsanga

·

2022. 11. 8. 19:15

#include <bits/stdc++.h>
using namespace std;
int n,m,chk[21][21],dx[4]={1,0,-1,0},dy[4]={0,1,0,-1},alphabet[27],MAX;
char board[21][21];
void solve(int x, int y, int len){
    MAX=max(len,MAX);
    for(int i=0;i<4;i++){
        int X=x+dx[i],Y=y+dy[i];
        if(X<0 || X>=n || Y<0 || Y>=m) continue;
        if(alphabet[board[X][Y]-'A'] || chk[X][Y]) continue;
        alphabet[board[X][Y]-'A']++,chk[X][Y]++;
        solve(X,Y,len+1);
        alphabet[board[X][Y]-'A']--,chk[X][Y]--;
    }
}
int main(){
    scanf("%d%d",&n,&m);
    for(int i=0;i<n;i++) scanf("%s",board[i]);
    chk[0][0]=1,alphabet[board[0][0]-'A']++;
    solve(0,0,1);
    printf("%d",MAX);
    return 0;
}