求助 怎么提速
  • 板块学术版
  • 楼主Ancoed
  • 当前回复9
  • 已保存回复9
  • 发布时间2023/6/18 11:57
  • 上次更新2023/10/23 12:51:41
查看原帖
求助 怎么提速
390946
Ancoed楼主2023/6/18 11:57

B3625

#include<iostream>
#include<cstdio>
using namespace std;
int n,m,ans=0,a[1010][1010];
char sr;
int dx[5]={0,-1,0,1,0};
int dy[5]={0,0,1,0,-1};
void dfs(int x,int y)
{
	for(int i=1;i<=4;i++)
	{
		int xx=x+dx[i];
		int yy=y+dy[i];
		if(xx>0&&xx<=n&&yy>0&&yy<=m&&a[xx][yy]==0)
		{
			a[xx][yy]=1;
			if(xx==n&&yy==m)
			{
				ans=1;
			}
			else dfs(xx,yy);
	        a[xx][yy]=0;
		}
	}
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>sr;
			if(sr=='#') a[i][j]=1;
		}
	}
	if(a[1][1]==1||a[n][m]==1)
	{
		cout<<"No";
		return 0;
	}
	a[1][1]=1;
	dfs(1,1);
	if(ans==1) cout<<"Yes";
	else cout<<"No";
	return 0;
}

这个是链接

2023/6/18 11:57
加载中...