RT,样例和数据小的时候可以正确输出,但是数据大了之后就会出现输出比应该的更多的行数之类的问题,求大佬看看是什么问题,本蒟蒻感觉似乎是输出的问题但是不知道怎么改。
#include <bits/stdc++.h>
using namespace std;
int table[450][450],dx[450],dy[450];
bool jud[401][401];
int xp[8]={2,2,1,1,-1,-1,-2,-2},yp[8]={1,-1,2,-2,2,-2,1,-1};
queue <int> quex;
queue <int> quey;
int main(){
int n,m,x,y;
memset(table,-1,sizeof(table));
for(int i=0;i<=450;i++)dx[i]=i;
for(int i=0;i<=450;i++)dy[i]=i;
cin>>n>>m>>y>>x;
quex.push(dx[x]);
quey.push(dy[y]);
table[quex.front()][quey.front()]=0;
jud[x][y]=true;
for(int i=1;i<1000;i++){
int tempx=quex.front();
int tempy=quey.front();
if(!quex.empty()&&!quey.empty()) {
quex.pop();
quey.pop();
}
for(int t=0;t<=7;t++){
if(jud[dx[tempx+xp[t]]][dy[tempy+yp[t]]]==true||1>dx[tempx+xp[t]]||dx[tempx+xp[t]]>m||dy[tempy+yp[t]]<1||dy[tempy+yp[t]]>n){
continue;}
quex.push(dx[tempx+xp[t]]);
quey.push(dy[tempy+yp[t]]);
table[dx[tempx+xp[t]]][dy[tempy+yp[t]]]=table[tempx][tempy]+1;
jud[dx[tempx+xp[t]]][dy[tempy+yp[t]]]=true;
}
}
for (int i = 1;i <= n;i++) {
for (int t = 1;t <= m;t++) {
cout << table[t][i] << " ";
}
cout << endl;
}
return 0;
}