dev--c++运行时没有任何问题。
#include<bits/stdc++.h>
using namespace std;
int a[500][500],n,m,x,y,bj[500][500],fx[15]={0,-1,-2,-2,-1,1,2,2,1},fy[15]={0,2,1,-1,-2,2,1,-1,-2};
queue< pair<int,int> > q;
bool go(int x,int y)
{
if(x>=1&&x<=n&&y>=1&&y<=m&&bj[x][y]==0)
{
return true;
}
else
{
return false;
}
}
void bfs(int x,int y,int b)
{
a[x][y]=b;
bj[x][y]=1;
for(int i=1;i<=8;i++)
{
if(go(x+fx[i],y+fy[i]))
{
a[x+fx[i]][y+fy[i]]=b+1;
q.push(make_pair(x+fx[i],y+fy[i]));
}
bj[x+fx[i]][y+fy[i]]=1;
}
while(!q.empty())
{
int zbx=q.front().first;
int zby=q.front().second;
q.pop();
bfs(zbx,zby,a[zbx][zby]);
}
}
int main()
{
cin>>n>>m>>x>>y;
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
a[i][ii]=-1;
}
}
bj[x][y]=1;
bfs(x,y,0);
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
cout<<a[i][ii]<<" ";
}
cout<<endl;
}
}