52分求调(包关注)
  • 板块P2802 回家
  • 楼主keyudong
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/1/11 21:25
  • 上次更新2025/1/12 10:33:13
查看原帖
52分求调(包关注)
1591690
keyudong楼主2025/1/11 21:25

52分,找不到错 代码:

#include <iostream>
using namespace std;
int n,m,s1,s2,e1,e2,a[10][10];
int fx[5]={0,1,-1,0,0};
int fy[5]={0,0,0,1,-1};
void dfs(int x,int y,int step,int hp)
{ 
	if(hp==0)
	{
		return ; 
	}
	if(x==e1&&y==e2)
	{
		cout<<step;
		exit(0);
	}
	if(a[x][y]==4)
		hp=6;
	a[x][y]=0;
	int tx,ty;
	for(int i=1;i<=4;i++)
	{
		tx=fx[i]+x;
		ty=fy[i]+y;
		if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&a[tx][ty]!=0)
		{
			dfs(tx,ty,step+1,hp-1); 
		}
	}
}
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)
                s1=i,s2=j;
            else if(a[i][j]==3)
                e1=i;e2=j;
    	}
    }
    dfs(s1,s2,0,6);
    cout<<-1;
	return 0;
}
2025/1/11 21:25
加载中...