一直return 3221225477,想想dfs好像没有越界,求助
查看原帖
一直return 3221225477,想想dfs好像没有越界,求助
765461
zhangmingsheng3521楼主2023/6/23 10:08
#include"bits/stdc++.h"
using namespace std;
bool a[502][502];
bool ans=false;
int xa,ya;
int dx[]={-1,1,0,0};
int dy[]={0,0,-1,1};
void dfs(int x,int y)
{
	a[x][y]=false;
	if ((x==xa)&&(y==ya))
	{
		ans=true;
		return;
    }
	for (int i=1;i<=4;i++)
	{
		if (((x+dx[i])>0)&&((y+dy[i])>0))
		{
			if (a[(x+dx[i])][(y+dy[i])])
		    {
			   dfs((x+dx[i]),(y+dy[i]));
		    }
		}
	}
}
int main()
{
	int startx,starty;
	int m,n;//m为列数,n为行数 
	scanf("%d%d",&m,&n);
	char l;
	for (int x=1;x<=(m+1);x++)
	{
		for (int y=1;y<=(n+1);y++)
		{
			a[x][y]=false;
		}
	}
	for (int i=1;i<=m;i++)
	{
		for (int o=1;o<=n;o++)
		{
			scanf("%c",&l);
			if (l=='s')
			{
				startx=i;
				starty=o;
				a[i][o]=true;
			}
			if (l=='g')
			{
				xa=i;
				ya=o;
				a[i][o]=true;
			}
			if (l=='.')
			{
				a[i][o]=true;
			}
		}
	}
	dfs(startx,starty);
	if (ans)
	{
		printf("Yes");
	}
	if (!ans)
	{
		printf("No");
	}
	return 0;
}
2023/6/23 10:08
加载中...