这道题使用了dp
很明显f[i][j]=f[i−1][j]+f[i][j−1],然后将马的格子删去就行
#include <iostream>
using namespace std;
long long dp[21][21]={1};
int mark[21][21]={0};
int main() {
int nx,ny,hx,hy;
cin>>nx>>ny>>hx>>hy;
const int Const[2][9]={{0,-2,-1,1,2,2,1,-1,-2},{0,1,2,2,1,-1,-2,-2,-1}};
for(int i=0;i<9;i++){
if(hx+Const[0][i]>=0&&hx+Const[0][i]<=nx&&hy+Const[1][i]>=0&&hy+Const[1][i]<=ny){
mark[hx+Const[0][i]][hy+Const[1][i]]=1;
}
}
for(int i=0;i<=nx;i++){
for(int j=0;j<=ny;j++){
if(i)
dp[i][j]+=dp[i-1][j];
if(j)
dp[i][j]+=dp[i][j-1];
dp[i][j]*=!mark[i][j];
}
}
cout<<dp[nx][ny]<<endl;
return 0;
}