Problem : 马的遍历
Description
中国象棋大家都玩过吧!!!
现在有只小马迷路了,它现在在0,0位置,它的家在m,n位置(棋盘大小为m*n),现规定小马只能往右走,请聪明的你帮帮小马算一下回到家有几种方案?
Input
家的位置m,n 比如4,8 1=<m,n<=200
Output
一个整数即方案数
Sample Input
4 8
Sample Output
37
HINT
深搜遍历+联通块
#include<bits/stdc++.h>
using namespace std;
int n,m,ans;
const int dir[4][2]={2,1,1,2,-1,2,-2,1};
bool in(int x,int y){
return x<=n&&x>=0&&y<=m&&y>=0;
}
void dfs(int x,int y){
if(x==n&&y==m){
ans++;
return;
}
for(int i=0;i<4;i++){
int tx=x+dir[i][0];
int ty=y+dir[i][1];
if(in(tx,ty)) {
dfs(tx,ty);
}
}
}
int main(){
cin>>n>>m;
dfs(0,0);
cout<<ans;
return 0;
}