来源:点击打开链接
这个题表面上看用DFS做(其实也能做),但其实可以用异常简洁的方式(异常到暴,用ASCII码):
#include <iostream>
using namespace std;
int n,m,b[256];
char map[150][150];
int main()
{
char traget;
int ans=0;
cin>>n>>m>>traget;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>map[i][j];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(map[i][j]==traget)
b[map[i-1][j]]=b[map[i+1][j]]=b[map[i][j-1]]=b[map[i][j+1]]=1;
}
}
for(int i='A';i<='Z';i++)
ans+=b[i];
cout<<ans-b[traget]<<endl;
return 0;
}