#include<bits/stdc++.h>
using namespace std;
int a[10000][10000],sum=0;
int n,m;
void dfs(int x,int y)//使用深度优先搜索递归遍历路径
{
if( x != n && y != m &&a[x+1][y] == 0 && a[x][y+1] == 0)//如果进入死路直接返回
return;
if( x == n && y == m)//如果到达终点就返回上一层再次搜索
{
sum++;
return;
}
else
{
if(a[x+1][y] != 0 ){
//cout<<x+1<<" "<<y<<endl;
dfs(x+1,y);
}
if(a[x][y+1] != 0 ){
//cout<<x<<" "<<y+1<<endl;
dfs(x,y+1);
}
}
}
int main(){
cin>>n>>m;
for(int i = 1 ; i <= n ; i++){
for(int j = 1 ; j <= m ; j++)
if( i % 2 == 0 && j % 2 ==0)
a[i][j] = 0;
else
a[i][j] = 1;
}//初始化地图
dfs(1,1);//开始深搜
cout<<sum;
return 0;
}
用深搜做最后一个点超时了,求大犇优化