为什么运行完结果总是不对?
#include <bits/stdc++.h>
using namespace std;
long long n,m,a,b,f[25][25],q[25][25];
int dx[9] = {0,1,1,2,2,-1,-1,-2,-2};
int dy[9] = {0,2,-2,1,-2,2,-2,1,-2};
int main()
{
cin >> n >> m >> a >> b;
f[0][0] = 1;
for (int i = 0;i < 9;i++)
{
int ux = a+dx[i],uy = b+dy[i];
if (ux < 0 || uy < 0 || ux > n || uy > m) continue;
q[ux][uy] = 1;
if (ux == 0 && uy == 0)
{
cout << 0 << endl;
return 0;
}
}
for (int i = 0;i <= n;i++)
{
for (int j = 0;j <= m;j++)
{
if (q[i][j]) continue;
if (i != 0) f[i][j] += f[i-1][j];
if (j != 0) f[i][j] += f[i][j-1];
}
}
cout << f[n][m] << endl;
return 0;
}