求助!!!

P1002 [NOIP2002 普及组] 过河卒

AC ```c #include<iostream> using namespace std; const int N = 35; int n, m, x, y; long long dp[N][N]; // 因为最后数字很大 所以要开long long bool vis[N][N]; int X[8] = {-2, -1, 1, 2, 2, 1, -1, -2}; int Y[8] = {-1, -2, -2, -1, 1, 2, 2, 1}; // 马能走的八个坐标点 int main() { cin >> n >> m >> x >> y; dp[2][1] = 1; vis[x+2][y+2] = 1; for (int i = 0; i < 8; i ++) vis[x+X[i]+2][y+Y[i]+2] = 1; // 马能走的坐标点标记为 1 , 说明卒就不能走这里 for (int i = 2; i <= n+2; i ++) for (int j = 2; j <= m+2; j ++) { if (vis[i][j]) continue; // 是马的阻挡点就跳过 dp[i][j] = dp[i-1][j] + dp[i][j-1]; // 状态转移方程 } cout << dp[n+2][m+2]; return 0; } ```
by timmyliao @ 2024-01-21 10:25:21


WA3 4是因为数据范围开小了,需要开long long才行
by fzy1139950253 @ 2024-01-21 15:38:58


@[fzy1139950253](/user/535584) 非常感谢
by zhr756812943 @ 2024-03-10 21:10:21


|