P1002求助
查看原帖
P1002求助
225837
jimmyshi29楼主2020/8/20 14:13
# include <iostream>
# include <algorithm>
# include <string>
# include <functional>
# include <vector>
# include <cstring>
# include <cmath>
# include <cstdio>
# include <queue>
# include <cstdlib>
using namespace std;

int n, m, t, mx, my, ans = 0;
bool a[25][25];
int dir[2][2] = {{1, 0}, {0, -1}};

bool in(int x, int y)
{
    return (x >= 1 && x <= n) && (y >= 1 && y <= m);
}

void dfs(int x, int y)
{
    if (x == n && y == m)
    {
        ans++;
        return;
    }
    for (int i = 0; i < 2; i++)
    {
        int x1 = x + dir[i][0];
        int y1 = y + dir[i][1];
        if (!in(x1, y1) || a[x1][y1] == false) continue;
        a[x1][y1] = false;
        dfs(x1, y1);
        a[x1][y1] = true;
    }
}


int main()
{
    cin >> n >> m >> mx >> my;
    memset (a, true, sizeof(a));
    a[mx][my] = false;
    if (in(mx + 1, my + 2)) a[mx + 1][my + 2] = false;
    if (in(mx + 1, my - 2)) a[mx + 1][my - 2] = false;
    if (in(mx + 2, my + 1)) a[mx + 2][my + 1] = false;
    if (in(mx + 2, my - 1)) a[mx + 2][my - 1] = false;
    if (in(mx - 1, my + 2)) a[mx - 1][my + 2] = false;
    if (in(mx - 1, my - 2)) a[mx - 1][my - 2] = false;
    if (in(mx - 2, my + 1)) a[mx - 2][my + 1] = false;
    if (in(mx - 2, my - 1)) a[mx - 2][my - 1] = false;
    dfs(1, 1);
    cout << ans << endl;
    return 0;
}

全部报零

2020/8/20 14:13
加载中...