这是BFS
代码改了一下,看注释
```cpp
#include<bits/stdc++.h>
using namespace std;
const int N=1e3+5;
const int fx[8]={0,0,1,-1,1,-1,1,-1};
const int fy[8]={1,-1,0,0,1,-1,-1,1};
int n,m,a[N][N],ans=0;//ans=0x3f3f3f3f;
int f[N][N][10];
struct code{
int x,y,s,l;
};
queue<code> q;
int main(){
cin>>m>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
code s;s.x=1,s.y=1,s.s=0,s.l=-1;
q.push(s);
while(!q.empty()){
code tmp=q.front(); q.pop();
if(tmp.x==n&&tmp.y==m){
cout<<tmp.s;//直接输出
return 0;
}
for(int i=0;i<8;i++){
if(i==tmp.l) continue;
int k=a[tmp.x][tmp.y];
code b;
b.x=tmp.x+k*fx[i];
b.y=tmp.y+k*fy[i];
b.s=tmp.s+1;
b.l=i;
if(b.x<1||b.y<1||b.x>n||b.y>m) continue;
if(f[b.x][b.y][i]) continue;
f[b.x][b.y][i]=1;
q.push(b);
}
}
cout<<"NEVER";
return 0;
}
```
by wo_hen_la @ 2023-09-26 20:51:03