1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| #include<bits/stdc++.h> using namespace std;
const int N=21; int dx[]={2,1,-1,-2,-2,-1,1,2,}, dy[]={1,2,2,1,-1,-2,-2,-1}; int ddx[]={0,1},ddy[]={1,0}; int p[N][N]; int n,m; int res=0;
void init() { for(int i=0;i<N;i++) { memset(p[i],0,sizeof(p[i])); } } void horse(int x, int y) { p[x][y]=1; for(int i=0;i<8;i++) { int a=x+dx[i],b=y+dy[i]; if(a >= 0 && a <= n && b >= 0 && b <= m) p[a][b]=1; } } void dfs(int x,int y) { for(int i=0;i<2;i++) { int a=x+ddx[i],b=y+ddy[i]; if(a==n and b==m) res++; if(a >= 0 && a <= n && b >= 0 && b <= m &&p[a][b]!=1) dfs(a,b); } } int main() { int x,y; cin>>n>>m>>x>>y; init(); horse(x,y); dfs(0,0); cout<<res<<endl; return 0; }
|