蒟蒻求救
#include<bits/stdc++.h>
using namespace std;
const int NR=405;
int n,m,x,y,cnt;
int line[8]={-2,-2,-1,1,2, 2, 1,-1};
int row[8]={-1, 1, 2,2,1,-1,-2,-2};
int a[NR][NR];
bool flag[NR][NR];
void dfs(int x,int y){
if(flag[x][y]){
if(a[x][y]<=cnt || cnt>n*m){
return;
}
}
flag[x][y]=true;
a[x][y]=cnt;
for(int i=0;i<8;i++){
cnt++;
if(x+line[i]>=1 && x+line[i]<=n && y+row[i]>=1 && y+row[i]<=m){
//printf("%d %d %d\n",x+line[i],y+row[i],cnt);
dfs(x+line[i],y+row[i]);
}
cnt--;
}
}
int main(){
scanf("%d %d %d %d",&n,&m,&x,&y);
dfs(x,y);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(flag[i][j]){
printf("%d ",a[i][j]);
}
else{
printf("-1 ");
}
}
puts("");
}
return 0;
}