以下为代码,9和11点错
#include<bits/stdc++.h>
using namespace std;
int a[10][10],vis[10][10],n,m,ans=1e8,hp=6;
int dx[]={0,-1,0,0,1},dy[]={0,0,-1,1,0};
void dfs(int x,int y,int s){
if(!hp) return;
if(a[x][y]==3){
ans=min(ans,s);
return;
}
//if(hp==1&&a[x][y]!=4) return;
if(s>=ans&&ans>0) return;
if(x<1||x>n||y<1||y>m||vis[x][y]) return;
vis[x][y]=1;
hp--;
//if(!hp) return;
if(a[x][y]==4) hp=6;
for(int i=1;i<=4;i++) dfs(x+dx[i],y+dy[i],s+1);
hp++;
vis[x][y]=0;
return;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j];
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++){
if(!a[i][j]) vis[i][j]=1;
}
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++){
if(a[i][j]==2) dfs(i,j,0);
}
if(ans==1e8) cout<<-1;
else cout<<ans;
return 0;
}