样例输出2,不知道为什么
#include<iostream>
using namespace std;
long long n,m,map[21][21]={},bk[21][21]={},q,w,num=0,di[2][2]={{1,0},{0,1}},flag=0,xx,yy;
void dfs(int x,int y){
if(x==q&&y==w){
num++;
flag=1;
return;
}
for(int i=0;i<2;i++){
xx=x+di[i][0];
yy=y+di[i][1];
if(map[xx][yy]==0&&bk[xx][yy]==0){
bk[xx][yy]=1;
dfs(xx,yy);
bk[xx][yy]=0;
}
}
}
int main(){
cin>>q>>w;
cin>>n>>m;
map[n-2][m+1]=1;
map[n-2][m-1]=1;
map[n+2][m+1]=1;
map[n+2][m-1]=1;
map[n-1][m+2]=1;
map[n-1][m-2]=1;
map[n+1][m+2]=1;
map[n+1][m-2]=1;
map[n][m]=1;
bk[0][0]=1;
dfs(0,0);
cout<<num;
}