为啥我的map边界改成22就过了3用例,21就不行.题目边界不是最大21嘛
查看原帖
为啥我的map边界改成22就过了3用例,21就不行.题目边界不是最大21嘛
890704
jh_plus楼主2023/11/8 00:18
#include<iostream>
#include<math.h>
using namespace std;
int b_x, b_y, c_x, c_y;
long long map[22][22];
bool f(int i, int j)
{
    if ((abs(i - c_x) == 1 && abs(j - c_y) == 2)
        || (abs(i - c_x) == 2 && abs(j - c_y) == 1))
        return false;
    return true;
}
long long dfs(int i, int j)
{
    if (map[i][j] != 0) return map[i][j];
    //若i,j越界,或者被马吃掉,或者来到的是马所在的位置
    if (i > b_x || j > b_y
        || f(i, j) == false
        || (i == c_x && j == c_y))return 0;
    //i,j位置合法,且到达目标点b_x,b_y
    if (i == b_x && j == b_y) return 1;
    map[i][j] = dfs(i + 1, j) + dfs(i, j + 1);
    return map[i][j];
}
int main()
{
    cin >> b_x >> b_y >> c_x >> c_y;
    cout << dfs(0, 0);
    return 0;
}
2023/11/8 00:18
加载中...