c艹不知道为什么有问题
  • 板块P2802 回家
  • 楼主Diary_51
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/7/27 15:02
  • 上次更新2024/7/27 16:08:26
查看原帖
c艹不知道为什么有问题
925688
Diary_51楼主2024/7/27 15:02
#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的初始值

2024/7/27 15:02
加载中...