#include<iostream>
using namespace std;
int bx, by, mx, my;
int temp[40][40];
int dx[2] = { 1,0 }, dy[2] = { 0,1 };
int total = 0;
void walk(int a, int b)
{
if (a == bx && b == by) { total++; return; }
else
{
for (int i = 0; i <= 1; i++)
{
if (a + dx[i] <= bx && b + dy[i] <= by && temp[a + dx[i]][b + dy[i]] == 0)
{
temp[a][b] = 1;
walk(a + dx[i], b + dy[i]);
temp[a][b] = 0;
}
}
}
}
int main()
{
cin >> bx >> by >> mx >> my;
bx+=2;by+=2;mx+=2;my+=2;
temp[mx][my] = 1;
temp[mx + 1][my + 2] = 1;
temp[mx + 2][my + 1] = 1;
temp[mx - 1][my + 2] = 1;
temp[mx - 2][my + 1] = 1;
temp[mx + 1][my - 2] = 1;
temp[mx + 2][my - 1] = 1;
temp[mx - 1][my - 2] = 1;
temp[mx - 2][my - 1] = 1;
walk(2, 2);
cout << total << endl;
return 0;
}
40分的代码求看,不知道这种方法为什么不能全部通过,哪里需要改呢,或者这种方法根本不能过,求大佬解释