1. 程式人生 > >美團點評: 網格走法數目

美團點評: 網格走法數目

題目連結: 網格走法數目

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;
}