第三和第四组测试点不过,大佬帮忙看看呗 第三组数据:20 20 4 0
#include<stdio.h>
int countPaths(int x, int y, int a, int b) {
int dp[25][25];
int i = 0;
int k = 0;
for (int i = 0; i < x; i++) {
for (int k = 0; k < y; k++) {
if (i == 0 && k == 0) {
dp[i][k] = 0;
}
else if (i == 0 || k == 0) {
dp[i][k] = 1;
if (i == 0 && a == 0 && k >= b || k == 0 && b == 0 && i >= a) {
dp[i][k] = 0;
}
}
else if (i == a - 1 && k == b - 2 || i == a - 2 && k == b - 1 || i == a + 1 && k == b - 2 || i == a + 2 && k == b - 1 || i == a - 2 && k == b + 1 || i == a + 2 && k == b + 1 || i == a - 1 && k == b + 2 || i == a + 1 && k == b + 2 || i == a && k == b) {
dp[i][k] = 0;
}
else {
dp[i][k] = dp[i - 1][k] + dp[i][k - 1];
}
}
}
return dp[x - 1][y - 1];
}
int main() {
int n, m, x, y, a, b;
//scanf("%d%d%d%d", &n, &m, &a, &b);
scanf("%d%d%d%d", &n, &m, &a, &b);
x = n + 1;
y = m + 1;
int paths;
paths = countPaths(x, y, a, b);
printf("%d", paths);
return 0;
}