3 条题解

  • 1
    @ 2025-8-20 14:39:14

    纯GCC版:

    #include <stdio.h>
    int t, n, sx, sy, ex, ey, xx, yy, dx[] = {0, 0, 1, -1}, dy[] = {1, -1, 0, 0};
    char a[100][100];
    short flag;
    short check(int x, int y)
    {
    	return x >= 0 && x < n && y >= 0 && y < n && a[x][y] == '.';
    }
    void dfs(int sx, int sy)
    {
    	if(sx == ex && sy == ey)
    	{
    		flag = 1;
    		return;
    	}
    	a[sx][sy] = '#';
    	for(int i = 0; i < 4; i ++)
    	{
    		xx = sx + dx[i];
    		yy = sy + dy[i];
    		if(check(xx, yy))
    			dfs(xx, yy);
    	}
    	return;
    }
    int main()
    {
    	scanf("%d\n", &t);
    	while(t --)
    	{
    		scanf("%d\n", &n);
    		for(int i = 0; i < n; i ++)
    			scanf("%s", &a[i]);
    		scanf("%d %d %d %d\n", &sx, &sy, &ex, &ey);
    		dfs(sx, sy);
    		puts(flag ? "YES" : "NO");
    		flag = 0;
    	}
    	return 0;
    }
    

    信息

    ID
    3023
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    64
    已通过
    33
    上传者