为什么DFS才10分!!!(qwq)
查看原帖
为什么DFS才10分!!!(qwq)
548118
caizihaolg楼主2023/2/27 16:52
#include<bits/stdc++.h>
using namespace std;
int dx[4]={0,0,-1,1},dy[4]={-1,1,0,0};
int a[2010][2010],v[2010][2010];
int n,m,ex,ey;
void dfs(int x,int y,int ans)
{
	if(x==ex && y==ey)
	{
		printf("%d",ans);
		exit(0);
	}
	for(int i=0;i<4;i++)
	{
		int xx=x+dx[i],yy=y+dy[i];
		if(xx<=n && xx>=1 && yy<=m && yy>=1 && a[xx][yy]==0 && v[xx][yy]==0)
		{
			v[xx][yy]=1;
			dfs(xx,yy,ans+1);
		}
	}
}
int main()
{
	scanf("%d %d",&n,&m);
	int sx,sy;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			char c;
			cin>>c;
			if(c=='#')
				a[i][j]=1;
			else if(c=='d')
				ex=i,ey=j;
			else if(c=='m')
				sx=i,sy=j;
		}
	}
	v[sx][sy]=1;
	dfs(sx,sy,0);
	
	return 0;
}

ps:先别管有没有 No way

2023/2/27 16:52
加载中...