#include<bits/stdc++.h>
using namespace std;
long long n,m;
long long a[15][15],sx,sy,ex,ey,ans=1000000,check[15][15];
int dis[4][2]={{-1,0},{1,0},{0,-1},{0,1}},disx,disy;
void dfs(int x,int y,int step,int hp)
{
if(hp==0)
{
return ;
}
if(x==ex&&y==ey)
{
if(ans<step)
{
ans=step;
}
return ;
}
for(int i=0;i<4;i++)
{
disx=x+dis[i][0];
disy=y+dis[i][1];
if(disx<1 || disx>n ||disy<1 || disy>m)
{
continue;
}
if(a[disx][disy]==0 || check[disx][disy]==1)
{
continue;
}
hp--;
if(a[disx][disy]==4)
{
hp=6;
}
check[disx][disy]=1;
step++;
dfs(disx,disx,step,hp);
check[disx][disy]=0;
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
if(a[i][j]==2)
{
sx=i;
sy=j;
}
if(a[i][j]==3)
{
ex=i;
ey=j;
}
}
}
dfs(sx,sy,0,6);
cout<<ans<<endl;
return 0;
}
样例都不对,但是看不出哪里有问题,dfs好像都没进去,一直输出的ans的初始值