题目描述
有一个X*Y的网格,小团要在此网格上从左上角到右下角,只能走格点且只能向右或向下走。请设计一个算法,计算小团有多少种走法。给定两个正整数int x,int y,请返回小团的走法数目。
#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;
}