新手尝试用DP做的,求大佬看看哪里错了(哭)
查看原帖
新手尝试用DP做的,求大佬看看哪里错了(哭)
1479237
abxxvrv楼主2024/9/28 22:36
#include <stdio.h>

int abs(int a, int b) {
    if (a > b) {
        return a - b;
    } else
        return b - a;
}
int IsHouse(int x1, int y1, int x2, int y2) {
        if ((abs(x1, x2) == 1 && abs(y1, y2) == 2) || (abs(x1, x2) == 2 && abs(y1, y2) == 1)) return 1;
        else return 0;
}
int Route(int x1, int y1, int x2, int y2) {
    int N;
    if (x1 == 0 && y1 == 0) return 0;
    while (x1 != 0 || y1 != 0) {
        if (x1 == 0 && y1 == 1) return 1;
        if (x1 == 1 && y1 == 0) return 1;
        if (IsHouse(x1, y1, x2, y2)) return 0;
        if (x1 == 0) return Route(0, y1 - 1, x2, y2);
        if (y1 == 0) return Route(x1 - 1, 0, x2, y2);
        return Route(x1 - 1, y1, x2, y2) + Route(x1, y1 - 1, x2, y2);
    }
}
int main() {
    int x1, y1, x2, y2, N; // 前两个是B, 后两个是马
    scanf("%d %d %d %d", & x1, & y1, & x2, & y2);
    N = Route(x1, y1, x2, y2);
    printf("%d\n", N);
    return 0;
}
2024/9/28 22:36
加载中...