用的dfs但样例都过不了,求大佬看看
查看原帖
用的dfs但样例都过不了,求大佬看看
787602
Tachikawa_Ruri楼主2023/1/28 22:29
# include<bits/stdc++.h>
using namespace std;
int n,m,sum=999999,a[500][500],dx[4]={-1,1,0,0},dy[4]={0,0,-1,1};
void dfs(int x1,int y1,int l,int t)
{
	if(a[x1][y1]==3&&l>0)
	{
		if(t<sum) sum=t;
		return;
	}
	if(l<=0) return;
	for(int i=0;i<4;i++)
	{
		int x=x1+dx[i],y=y1+dy[i];
		if(x<0||y<0||x>=n||y>=m||a[x][y]==0) continue;
		if(a[x][y]==1||a[x][y]==2)
		        dfs(x,y,l-1,t+1);
		else if(a[x][y]==4)
		        dfs(x,y,6,t+1);
	}
}
int main()
{
	ios::sync_with_stdio(0);
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cin>>a[i][j];
		}
	}
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			if(a[i][j]==2)
			{
				dfs(i,j,6,0);
				break;
			}
		}
	}
	if(sum!=999999)
	cout<<sum;
	else
	cout<<"-1";
 } 
2023/1/28 22:29
加载中...