文章

99

粉丝

120

获赞

8

访问

110.0k

头像
P1363 幻象迷宫
备考心情
发布于2024年8月28日 10:16
阅读数 1.1k

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#define MEM(arr,num) memset(arr,num,sizeof(arr))
#define FOR(i,l,r) for(int i(l);i < r;++i)
#define SIZE 1511
using namespace std;

char board[SIZE][SIZE];
bool map1[SIZE * 2][SIZE * 2], map2[SIZE][SIZE];
//map1表示有无走到过这个点,map2表示有无走到过映射点
int n, m, dn, dm;

bool dfs(int x, int y)
{
    if (x == -1)
    {
        if (dfs(dn - 1, y))return true;
        return false;
    }
    if (x == dn)
    {
        if (dfs(0, y))return true;
        return false;
    }
    if (y == -1)
    {
        if (dfs(x, dm - 1))return true;
        return false;
    }
    if (y == dm)
    {
        if (dfs(x, 0))return true;
        return false;
    }//上面四个if表示是否到边界,是就传送
    if (map1[x][y] || board[x % n][y % m] == '#')
    {
        return false;
    }//判断能不能走
    if (map2[x % n][y % m])
    {
        return true;
    }//判断这有没有走到这个点的映射
    map1[x][y] = true;
...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发