#include <iostream>
using namespace std;
typedef long long LL;
const int N = 25;
int n, m, a, b;
LL f[N][N];
bool st[N][N];
int dx[] = {0, 2, 1, -1, -2, -2, -1, 1, 2};
int dy[] = {0, 1, 2, 2, 1, -1, -2, -2, -1};
void get(int x, int y)
{
for (int i = 0; i < 9; i ++ )
{
int u = x + dx[i], v = y + dy[i];
if (u >= 0 && u <= n && v >= 0 && v <= m)
st[u][v] = true;
}
}
int main()
{
cin >> n >> m >> a >> b;
n ++ , m ++ , a ++ , b ++ ;
get(a, b);
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= m; j ++ )
if (i == 1 && j == 1) f[1][1] = 1;
else
{
if (j > 1 && !st[i][j]) f[i][j] += f[i][j - 1];//上边界,防止从边界左边过来
if (i > 1 && !st[i][j]) f[i][j] += f[i - 1][j];//左边界,防止从边界左边过来
}
cout << f[n][m] << endl;
}
过河卒——洛谷1002
于 2023-02-02 13:01:40 首次发布