代码不知道哪里错了

P1002 [NOIP2002 普及组] 过河卒

```cpp #include <iostream> #include <bits/stdc++.h> using namespace std; long long flag[1001][1001]; long long a[1001][1001]; long long bx,by; long long ma,mb; int main () { cin >> by >> bx; cin >> ma >> mb; for (int i = 0; i <= by; i++) { a[i][0] = 1; } for (int i = 0; i <= bx; i++) { a[0][i] = 1; } flag[ma][mb] = 1; flag[ma - 1][mb - 2] = 1; flag[ma - 1][mb + 2] = 1; flag[ma + 1][mb - 2] = 1; flag[ma + 1][mb + 2] = 1; flag[ma - 2][mb - 1] = 1; flag[ma - 2][mb + 1] = 1; flag[ma + 2][mb - 1] = 1; flag[ma + 2][mb + 1] = 1; for (int i = 1; i <= by ; i++) { for (int j = 1; j <= bx; j++) { if (flag[i][j] != 1) { a[i][j] = a[i][j - 1] + a[i - 1][j]; } else { a[i][j] = 0; } } } cout << a[by][bx]; return 0; } ```
by hanran_ @ 2021-07-07 12:02:52


马的坐标可能在0上(0, 4),那ma-2或mb-2就越界了 @[云起雾饶](/user/260361)
by kakashi263 @ 2021-07-09 20:36:19


|