文章
99
粉丝
120
获赞
8
访问
96.9k
#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;
...
登录后发布评论
暂无评论,来抢沙发