代码如下:
#include<bits/stdc++.h>
using namespace std;
int n,m,dy[4]={0,0,1,-1},dx[4]={1,-1,0,0},ans=1;
char z[110][110];
int vis[110][110];
int sx,sy;
struct point{
int x;
int y;
};
queue<point>q;
int bfs(int x,int y){
point tmp;
tmp.x=x;
tmp.y=y;
q.push(tmp);
while(!q.empty()){
tmp=q.front();
q.pop();
for(int i=0;i<4;i++){
point np=tmp;
np.x+=dx[i];
np.y+=dy[i];
if(np.x>=0&&np.x<=n&&np.y>=0&&np.y<=m&&!vis[np.x][np.y]&&z[np.x][np.y]!='#'){
vis[np.x][np.y]=1;
q.push(np);
ans++;
}
}
}
return ans;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
cin>>z[i][j];
if(z[i][j]=='@')sx=i,sy=j;
}
vis[sx][sy]=1;
cout<<bfs(sx,sy)<<endl;
return 0;
}
各位大佬调一下,谢谢!!!