20分求助

P1002 [NOIP2002 普及组] 过河卒

```cpp #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include <vector> using namespace std; const int N = 44; long long f[N][N] = { 0 }; int ctrl[N][N], xb, yb, hx, hy; int dx[] = { 0, -2, -1, 1, 2, 2, 1, -1, -2 }; int dy[] = { 0, 1, 2, 2, 1, -1, -2, -2, -1 }; //f[i,j]=f[i-1,j]+f[i,j-1] int main() { cin >> xb >> yb >> hx >> hy;//B 和 马 for (int i = 0; i < 9; i++) { int tmpx = hx + dx[i]; int tmpy = hy + dy[i]; if (tmpx >= 0 && tmpx <= yb && tmpy >= 0 && tmpy <= xb) ctrl[tmpx][tmpy] = 1;//标记马控制点 } for (int i = 0; i < N; i++) { f[i][0] = 1; f[0][i]=1; } for (int i = 1; i <= xb; i++) { for (int j = 1; j <= yb; j++) { if (!ctrl[i][j]) { f[i][j] = f[i][j - 1] + f[i - 1][j]; } } } cout << f[xb][yb]; return 0; } ``` 40分了
by AVLw @ 2023-09-25 14:09:13


|