70分求助
  • 板块P1605 迷宫
  • 楼主jojo222
  • 当前回复4
  • 已保存回复5
  • 发布时间2024/10/7 17:03
  • 上次更新2024/10/7 17:42:13
查看原帖
70分求助
1046434
jojo222楼主2024/10/7 17:03
#include <bits/stdc++.h>
using namespace std;
int n, m, t, x, y;
int sx, sy, tx, ty;
int dx[4] = {1, -1}, dy[4] = {0, 0, 1, -1};
bool vis[6][6];
int dfs(int x, int y)
{
    if(x == tx && y == ty) return 1;
    int ans = 0;
    for(int i = 0; i < 4; i++)
    {
        int x1 = x + dx[i], y1 = y + dy[i];
        if(x1 < 1 || x1 > n || y1 < 1 || y1 > m) continue;
        if(vis[x1][y1]) continue;
        vis[x1][y1] = true;
        ans += dfs(x1, y1);
        vis[x1][y1] = false;
    }
    return ans;
}
int main()
{
    scanf("%d%d%d%d%d%d%d", &n, &m, &t, &sx, &sy, &tx, &ty);
    while(t--)
    {
        scanf("%d%d", &x, &y);
        vis[x][y] = true;
    }
    printf("%d", dfs(sx, sy));
    return 0;
}
2024/10/7 17:03
加载中...