#include<bits/stdc++.h>
using namespace std;
int Map[9][9],n,m,hp=6,sx,sy,min_ans=1e9,ans;
bool vis[9][9][7];
const int dx[]={-1,1,0,0};
const int dy[]={0,0,-1,1};
void dfs(int x,int y)
{
int newx,newy,f=0,f2=0;
if(Map[x][y]==3)
{
if(ans<min_ans)min_ans=ans;
ans=f;
return;
}
for(int i=0;i<4;i++)
{
newx=x+dx[i];
newy=y+dy[i];
ans++;
if(newx<0||newx>=n||newy<0||newy>=m)continue;
if(Map[newx][newy]==0)continue;
cout<<hp<<' '<<Map[newx][newy]<<'\n';
if(hp==1&&Map[newx][newy]!=4)continue;
if(vis[newx][newy][hp])
{
hp=f2;
continue;
}
if(Map[newx][newy]==4)hp=6;
else hp--;
f=ans;
f2=hp;
vis[newx][newy][hp]=true;
dfs(newx,newy);
vis[newx][newy][hp]=false;
}
}
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>Map[i][j];
if(Map[i][j]==2)
{
sx=i;
sy=j;
}
}
}
vis[sx][sy][6]=true;
dfs(sx,sy);
if(min_ans==1e9)cout<<-1;
else cout<<min_ans;
return 0;
}
在Map[0][0]和Map[1][0]之间不断往返
调了昨天一天+今天一上午(预计还要调一下午)
验证码祭( yyds )