#include <bits/stdc++.h>
using namespace std;
int n,m,mx,my,ans;
int v[110][110];
int f[2][2]={1,0,0,1};
int f1[8][2]={1,2,1,-2,-1,2,-1,-2,2,1,2,-1,-2,1,-2,-1};
void dfs(int x,int y){
if(x==n&&y==m){
ans++;
return;
}
for(int i=0;i<2;i++){
int dx=x+f[i][0];
int dy=y+f[i][1];
if(dx>=0&&dx<=n&&dy>=0&&dy<=m&&!v[dx][dy]){
dfs(dx,dy);
}
}
}
int main(){
cin>>n>>m>>mx>>my;
v[mx][my]=1;
for(int i=0;i<8;i++){
int dx=mx+f1[i][0];
int dy=my+f1[i][1];
if(dx>=0&&dx<=n&&dy>=0&&dy<=m) v[dx][dy]=1;
}
dfs(0,0);
cout<<ans;
return 0;
}
原题
希望能改成dp,谢谢