dfs不知道错在哪里,SOS求助
  • 板块P2802 回家
  • 楼主50ZH
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/2/18 17:30
  • 上次更新2023/10/24 00:26:50
查看原帖
dfs不知道错在哪里,SOS求助
578624
50ZH楼主2023/2/18 17:30
#include<cstdio>
int a[10][10];
int vis[10][10];
int x1[4]={0,0,1,-1};
int y1[4]={1,-1,0,0};
int n,m,q,d;
int qwq=100;
void dfs(int x,int y,int sum,int ans)
{
    if(a[x][y]==3&&ans<qwq)
	{
		qwq=ans;
		return;
	}
	if(sum<=1||ans>=qwq)
	{
	   return;	
    }
	for(int i=0;i<4;i++)
	{
		int xx=x+x1[i];
		int yy=y+y1[i];
		if(xx>=0&&xx<n&&yy>=0&&yy<m&&a[xx][yy]!=0&&vis[xx][yy]==0)
		{
		    vis[xx][yy]=1;
			if(a[xx][yy]==4){
				sum=6;
				dfs(xx,yy,sum,ans++);
			}
			else 
			{
				dfs(xx,yy,sum--,ans++);
			}				
			vis[xx][yy]=0;
		}
	}
	return;
}
int main()
{
	scanf("%d %d",&n,&m);
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			scanf("%d",&a[i][j]);
			if(a[i][j]==2)
			{
				q=i;d=j;
			}
		}
	}
	vis[q][d]=1;
	dfs(q,d,6,0);
	if(qwq==100)printf("-1");
	else printf("%d",qwq);
	return 0;
}
2023/2/18 17:30
加载中...