题目:http://oj.codingle.cn/#/ebank/K11544
#include<bits/stdc++.h>
using namespace std;
int ax,ay,bx,by;
bool vis[101][101],ok=1;
int dx[12]={-2,-1,1,2,-2,2,-2,2,-2,-1,1,2};
int dy[12]={-2,-2,-2,-2,-1,-1,1,1,2,2,2,2};
void dfs(int x,int y,int step)
{
vis[x][y]=1;
if(x==1&&y==1&&ok){
cout<<step<<"\n";
ok=0;
return;
}
for(int i=0;i<12;i++)
{
int xx=x+dx[i],yy=y+dy[i];
if(xx>=1&&yy>=1&&xx<=100&&yy<=100&&!vis[xx][yy])
dfs(xx,yy,step+1);
}
}
int main()
{
cin>>ax>>ay>>bx>>by;
dfs(ax,ay,1);
ok=1;
memset(vis,0,sizeof(vis));
dfs(ay,ax,1);
return 0;
}
输出107和109,求助