全网首发
2024-06-16 14:56:57
发布于:北京
17阅读
0回复
0点赞
全网首发
哦耶!
#include<bits/stdc++.h>
using namespace std;
int arr[101][101],dp[101][101];
int xx[8]={-1,-1,-1,0,0,1,1,1},yy[8]={-1,0,1,-1,1,-1,0,1};
struct stru{
int x,y,k;
};
int main()
{
memset(dp,-1,sizeof(dp));
int n,m,xxx,yyy;
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
char a;
cin>>a;
if(a=='X')
{
xxx=i,yyy=j;
arr[i][j]=0;
}
else if(a=='@')
arr[i][j]=-1;
else
arr[i][j]=0;
}
queue<stru>q;
q.push({xxx,yyy,0});
while(!q.empty())
{
stru num=q.front();
q.pop();
int x=num.x,y=num.y,k=num.k;
for(int i=0;i<8;i++)
{
if(x+xx[i]<1||x+xx[i]>n||y+yy[i]<1||y+yy[i]>m)
continue;
if(dp[x+xx[i]][y+yy[i]]!=-1)
continue;
dp[x+xx[i]][y+yy[i]]=k+1;
q.push({x+xx[i],y+yy[i],k+1});
}
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cout<<(!arr[i][j]?0:dp[i][j])<<(j==m?'\n':' ');//这一行好好写,别学我,除非你作
return 0;
}
这里空空如也
有帮助,赞一个