该题目可以使用DFS做出,代码如下
#include<bits/stdc++.h>
using namespace std;
string a[1001];
int n,m;
int b[1001][1001];
int c[10000001];
int dfs(int x,int y,int t,string k)
{
if(x<=0||x>n||y<0||y>=n)return 0;
if(b[x][y]!=0)return 0;
if(a[x][y]==k[0])return 0;
c[t]++;
b[x][y]=t;
k[0]=a[x][y];
dfs(x+1,y,t,k);
dfs(x,y+1,t,k);
dfs(x-1,y,t,k);
dfs(x,y-1,t,k);
return 0;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
{
for(int j=0;j<n;j++)
{
if(b[i][j]==0)
{
string k="0";
k[0]='2';
dfs(i,j,i*n+j,k);
}
}
}
int x,y;
for(int i=1;i<=m;i++)
{
cin>>x>>y;
cout<<c[b[x][y-1]]<<'\n';
}
return 0;
}
该题目可以使用DFS做出,应添加标签 “DFS” 该题目仅需要基础的搜索与并查集思想即可做出,总体难度不大,我认为应当调为橙色