RE求助
查看原帖
RE求助
1031098
DUAN19935268512楼主2023/8/1 17:20
#include <iostream>
#include <vector>
#include <cstring>

using namespace std;

const int MAX_N = 100;

int n, m;
bool grid[MAX_N][MAX_N];
long long dp[MAX_N][MAX_N];

long long dfs(int x, int y) 
{
    if (x < 0 || x > n || y < 0 || y > m)
        return 0;

    if (x == 0 && y == 0)
        return 1;

    if (grid[x][y])         
        return 0;

    if (dp[x][y] != -1)
        return dp[x][y];
    
    dp[x][y] = dfs(x - 1, y) + dfs(x, y - 1);

    return dp[x][y];
}

int main() 
{
    cin >> n >> m;
    int a, b;
    cin >> a >> b;

    grid[a][b] = grid[a - 1][b - 2] = grid[a - 1][b + 2] = grid[a + 1][b - 2] = grid[a + 1][b + 2] = grid[a - 2][b - 1] = grid[a - 2][b + 1] = grid[a + 2][b - 1] = grid[a + 2][b + 1] = 1;

    memset(dp, -1, sizeof(dp));

    cout << dfs(n, m) << endl;
    return 0;
}
2023/8/1 17:20
加载中...