【牛客】 [编程题] 201301 JAVA 题目2-3级 C++

1.题目描述

链接:https://www.nowcoder.com/questionTerminal/e2a22f0305eb4f2f9846e7d644dba09b?toCommentId=573050

请编写一个函数(允许增加子函数),计算n×m个的棋盘格子(正为横向的格子数,米为竖向的格子数)沿着各自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。

2.思路分析

  1. 运用递归的思想,反过来将(0, 0)作为终点,将(m, n)作为起点,然后从起点(m, n)一直走到终点(0 ,0)
  2. 每次无论如何一定会向右走一步为(m , n-1)然后向下走为(m-1, n)
  3. 最后 m 或 n 等于0,那么就走到了边缘,也就只能走哪一条路

3.代码实现

#include <iostream>
using namespace std;

int Count(int m, int n)
{
    if(m == 0 || n == 0)
        return 1;
    return Count(m - 1, n) + Count(m, n - 1);
}

int main()
{
    int n = 0, m =0;
    while(cin >> m >> n)
    {
        cout << Count(m, n) <<endl;
    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43967449/article/details/106672668