10分蒟蒻求助!!!
查看原帖
10分蒟蒻求助!!!
760992
guoduor楼主2023/8/30 09:21

改了亿遍还不对,9个全TLE

#include <cstdio>
#include <iostream>

using namespace std;

char a[10][10];
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}},n,m;//偏移量,右下左上
bool vis[10][10];//标记地图
int sx,sy,fx,fy,ans1;//起点,终点 

void dfs(int x,int y)
{
	if(x == fx && y == fy)
	{
		ans1=1;
		return;
	}
	for(int i=0;i<4;i++)//四个方向枚举
	{
		int kx=x+dir[i][0],ky=y+dir[i][1];//假象位置
		if(kx < 1 || kx > n || ky < 1 || ky > m)//出图
		{
			continue;
		}
		if(vis[kx][ky] == false && (a[kx][ky] != '#'))//没走过
		{
			vis[kx][ky]=true;//标记走过
			dfs(kx,ky);
			vis[kx][ky]=false;
		}
	}
}

int main()
{
	scanf("%d %d",&n,&m);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin >> a[i][j];
		}
	}
	sx=1;
	sy=1;
	fx=n;
	fy=m;
	vis[sx][sy]=true;
	dfs(sx,sy);
	if(ans1 != 0)
	{
		printf("Yes");
	}
	else
	{
		printf("No");
	}
	return 0;
}
2023/8/30 09:21
加载中...