不知道为何0分,举了另一个例子也没毛病,求帮助!!!!!! 附上代码:
#include <bits/stdc++.h>
using namespace std;
int dx[8]={1,1,2,2,-1,-1,-2,-2};
int dy[8]={2,-2,1,-1,2,-2,1,-1};
int h[160005][3];
int a[401][401];
int ax,ay;
int t,w;
int zz;
int n,m;
void work(int tx,int ty,int wx,int wy)
{
if(tx==wx&&ty==wy){
zz=0;
return;
}
memset(a,0,sizeof(a));
t=0;w=1;
h[1][0]=tx;
h[1][1]=ty;
h[1][2]=0;
do
{
t++;
int nx=h[t][0],ny=h[t][1];
for(int i=0;i<=7;i++)
{
ax=nx+dx[i];
ay=ny+dy[i];
if(ax>0&&ax<=n&&ay>0&&ay<=m&&a[ax][ay]==0)
{
a[ax][ay]=1;
w++;
h[w][0]=ax;
h[w][1]=ay;
h[w][2]=h[t][2]+1;
if(ax==wx&&ay==wy)
{
zz=h[w][2];
}
}
}
}while(t<w);
}
int main()
{
int tx,ty;
cin>>n>>m>>tx>>ty;
for(int i=1;i<=n;i++)
{
for(int j=1;j<m;j++)
{
zz=-1;
work(tx,ty,i,j);
cout<<zz<<" ";
}
zz=-1;
work(tx,ty,i,m);
cout<<zz;
cout<<endl;
}
return 0;
}
看dalao的题解看不懂,希望能挑一挑错,谢谢!