求助80分dfs #3#9

P1301 魔鬼之城

这是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


|