为什么条件是x<=nx呢?比如一个6*9的矩阵,明明马可以在地图的x方向上横着走直到9啊
#include<queue>
#include<map>
#include<string.h>
using namespace std;
typedef pair<int,int> PII;
int dz[401][401];
int dx[]={1,1,2,2,-1,-1,-2,-2},dy[]={2,-2,1,-1,2,-2,1,-1};
int main()
{
int map[401][401];
int n,m,x,y;
cin>>n>>m>>x>>y;
memset(map,-1,sizeof(map));
map[x][y]=0;
queue<PII>p;
p.push({x,y});
dz[x][y]=0;
while(p.size())
{
PII t=p.front();
//cout<<t.first<<' '<<t.second<<'A'<<endl;
p.pop();
for(int i=0;i<8;i++)
{
int nx=t.first+dx[i],ny=t.second+dy[i];
// cout<<nx<<' '<<ny<<endl;
if(nx>0&&nx<=n&&ny>0&&ny<=m&&map[nx][ny]==-1)
{
// cout<<nx<<' '<<ny<<endl;
p.push({nx,ny});
dz[nx][ny]=dz[t.first][t.second]+1;
map[nx][ny]=dz[nx][ny];
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
printf("%-5d",map[i][j]);
}
cout<<endl;
}
return 0;
}