题目:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/af972a2a1214a10ab4fd2762e920d0f5.png)
分析:pair
代码:
#include<bits/stdc++.h>
using namespace std;
int A[405][405];
int B1[8]={-1,1,1,-1,2,2,-2,-2};
int B2[8]={-2,2,-2,2,1,-1,1,-1};
int main()
{
int a1,a2,a3,a4;
cin>>a1>>a2>>a3>>a4;
memset(A,-1,sizeof(A));
A[a3][a4]=0;
queue<pair<int,int> > qp;
pair<int,int> p;
p.first=a3;
p.second=a4;
qp.push(p);
while(!qp.empty())
{
pair<int,int> p2;
p2=qp.front();
qp.pop();
for(int i=0;i<8;i++)
{
pair<int,int> p3;
p3.first=p2.first+B1[i];
p3.second=p2.second+B2[i];
if(p3.first<=0||p3.first>a1) continue;
if(p3.second<=0||p3.second>a2) continue;
if(A[p3.first][p3.second]!=-1) continue;
A[p3.first][p3.second]=A[p2.first][p2.second]+1;
qp.push(p3);
}
}
for(int i=1;i<=a1;i++)
{
for(int j=1;j<=a2;j++) printf("%-5d", A[i][j]);;
cout<<endl;
}
}