题解 | #马踏棋盘#
马踏棋盘
https://ac.nowcoder.com/acm/problem/235814
#include<bits/stdc++.h>
#define x first
#define y second
using namespace std;
const int N=20;
int dx[4]={1,1,2,2},dy[4]={2,-2,1,-1};
int n,m,cnt;
void dfs(int x,int y)
{
//到达终点就方案数+1
if(x==n&&y==m)
{
cnt++;
return ;
//出界了就return
}else if(x>n||x<1||y>m||y<1){
return ;
}
//从(1,1)点开始走,如果出界了,就回溯从刚好没出界的地方继续走
for(int i=0;i<4;i++)
dfs(x+dx[i],y+dy[i]);
}
int main()
{
//输入
cin>>m>>n;
//核心
dfs(1,1);
//输出
cout<<cnt;
}