递归-网格走法

题目描述
有一个X*Y的网格,小团要在此网格上从左上角到右下角,只能走格点且只能向右或向下走。请设计一个算法,计算小团有多少种走法。给定两个正整数int x,int y,请返回小团的走法数目。
输入描述:
输入包括一行,逗号隔开的两个正整数x和y,取值范围[1,10]。
输出描述:
输出包括一行,为走法的数目。

#include<iostream>
#include<memory.h>
using namespace std;

int arry[12][12];
void Init(int x,int y){
    memset(arry,0,sizeof(arry));
    for(int i = 1; i <= x;i++)
        for(int j=1; j<= y;j++){
            arry[i][j]=1;
        }
    arry[x][y] = 2;
}
int go(int x,int y){
    //如果 x y 等于2 代表到达终点 返回一个1 
    if(arry[x][y] == 2) return 1;
    if(arry[x][y] == 0) return 0;
    return (go(x+1,y) + go(x,y+1));
}
int main(){
    int m,n;
    while(cin>>m>>n){
        Init(m+1,n+1);
        int temp = 0;
        temp = temp + go(1,1);
        cout<<temp;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_36120793/article/details/79343130
今日推荐