先看代码:
#include<bits/stdc++.h>
using namespace std;
int a[30][30], i, j, k, bx, by, mx, my;
bool b[30][30] = {1};
int main() {
cin >> bx >> by >> mx >> my;
b[mx][my] = b[mx + 2][my + 1] = b[mx + 1][my + 2] = b[mx - 1][my + 2] = b[mx + 2][my - 1] = b[mx + 1][my - 2] = b[mx - 1][my - 2] = b[mx - 2][my - 1] = 0;
for (i = 0; i <= bx; i++) {
if (b[i][by]) {
a[i][by] = 1;
} else break;
}
for (i = 0; i <= by; i++) {
if (b[bx][i]) {
a[bx][i] = 1;
} else break;
}
for (i = 1; i <= bx; i++) {
for (j = 1; j <= by; j++) {
if (b[i][j]) {
a[i][j] = a[i - 1][j] + a[i][j - 1];
}
}
}
cout << a[bx][by];
return 0;
}
a数组记录这一个格子路径数,
b数组记录这个格子是否为“禁走格”。
求助X﹏X
对代码仍有疑惑可打在评论区