题目链接: 网格走法数目
dfs,朝下和朝右两个方向搜索就可以了。
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 12;
int map[maxn][maxn];
int dfs(int x,int y);
int x,y,ans;
int aimx,aimy; //目的地的坐标
int main()
{
while(cin>>x>>y)
{
ans=0;
aimx=x;
aimy=y;
dfs(0,0); //从(0,0)开始搜索
cout<<ans<<endl;
}
return 0;
}
int dfs(int x,int y)
{
// cout<<"("<<x<<","<<y<<") "<<endl;
if(x>aimx || y>aimy) return 0; //超过边境了
if(x==aimx && y==aimy ) //走到目的地了
{
ans++;
return 0;
}
dfs(x+1,y); //朝下走
dfs(x,y+1); //朝右走
return 0;
}