← Back to List

1987번: 알파벳 ↗

Solutions

C++14
645 B | 645 chars
#include <iostream>
#include <string>
using namespace std;
int Y,X,Max;
int dy[]={0,0,1,-1};
int dx[]={1,-1,0,0};
string ar[55];
int check[55],M[22][22];
void f(int a, int b, int c)
{
	if(c>Max) Max=c;
	for(int d=0; d<4; d++)
	{
		if(0<=a+dy[d]&&a+dy[d]<Y && 0<=b+dx[d] && b+dx[d]<X)
		{
			if(check[ar[a+dy[d]][b+dx[d]]-'A']!=1/*&&M[a+dy[d]][b+dx[d]]<c+1*/)
			{
				//M[a+dy[d]][b+dx[d]]=c+1;
				check[ar[a+dy[d]][b+dx[d]]-'A']=1;
				f(a+dy[d],b+dx[d],c+1);
				check[ar[a+dy[d]][b+dx[d]]-'A']=0;
			}
		}
	}
	
}
int main()
{
	cin>>Y>>X;
	for(int y=0; y<Y; y++) {
		cin>>ar[y];
	}
	M[0][0]=1;
	check[ar[0][0]-'A']=1;
	f(0,0,1);
	cout<<Max;
}