1.二维数组寻找
//设置方向函数
int dx[12]={-2,-2,-2,-2,-1,-1,1, 1,2,2, 2, 2};
int dy[12]={1, 2,-1,-2, 2,-2,2,-2,1,2,-1,-2};
//记录是否访问
int vis[150][150];
//记录每一个点数据 step记录寻找的步数
struct point{
int x,y;
int step;
};
//x y开始位置
void bfs(int x,int y){
queue<point> q;
memset(vis,0,sizeof(vis));
vis[x][y]=1;
point p0;
p0.x=x;
p0.y=y;
p0.step=0;
q.push(p0);
//队列为空退出 即没有新的符合条件的点可以进入
while(!q.empty()){
point a=q.front();
q.pop();
for(int i=0;i<12;i++){
//方向上到达的点
int nx=a.x+dx[i];
int ny=a.y+dy[i];
//判断是否符合条件
if(nx>=1&&ny>=1&&nx<=100&&ny<=100&&(vis[nx][ny]==0)){
vis[nx][ny]=1;
point np;
np.x=nx;
np.y=ny;
np.step=a.step+1;//++不行
q.push(np);
if(nx==1&&ny==1){
cout<<a.step+1<<endl;
return ;
}
}
}
}
}