题目链接

题目描述
有一个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;
}

Last modification:September 21st, 2019 at 12:35 am
如果觉得我的文章对你有用,请随意赞赏