dp做
2026-08-11 11:23:06
发布于:广东
5阅读
0回复
0点赞
//https://www.luogu.com.cn/problem/P1002#ide
#include <bits/stdc++.h>
using namespace std;
int dx[8] = {-2, -1, 1, 2, 2, 1, -1, -2};
int dy[8] = {1, 2, 2, 1, -1, -2, -2, -1};
bool b[25][25];
long long dp[25][25];
int main() {
int n, m, nn, mm;
cin >> n >> m >> nn >> mm;
b[nn][mm] = true;
for (int i = 0; i < 8; i++) {
int nx = nn + dx[i];
int ny = mm + dy[i];
if(nx<0||nx>n||ny<0||ny>m)continue;
b[nx][ny] = true;
}
dp[0][0] = 1;
for (int i = 0; i <= n; i++) {
for (int j = 0; j <= m; j++) {
if (b[i][j]) continue;
if (i > 0)dp[i][j] += dp[i - 1][j];
if (j > 0)dp[i][j] += dp[i][j - 1];
}
}
cout << dp[n][m];
return 0;
}
这里空空如也







有帮助,赞一个