纯暴力递推
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 25;
int ex,ey,x1,y1,ans;
bool p[N][N];
void go(int x,int y){
if(x == ex&&y == ey){
ans++;
return;
}
if(x >= 0 && x <= ex && y >= 0 && y <= ey && !p[x][y]){
p[x][y] = true;
go(x + 1,y);
go(x,y + 1);
p[x][y] = false;
}else{
return;
}
}
int main(){
cin>>ex>>ey>>x1>>y1;
memset(p,false,sizeof p);
p[x1][y1] = p[x1-1][y1-2] = p[x1-2][y1-1] = p[x1-2][y1+1] = 1;
p[x1-1][y1+2] = p[x1+1][y1-2] = p[x1+2][y1-1] = p[x1+2][y1+1] = p[x1+1][y1+2] = 1;
go(0,0);
cout<<ans;
return 0;
}
求优化思路