AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

AcWing 822. 走方格(超短,超简单)    原题链接    简单

作者: 作者的头像   无_964 ,  2024-10-02 12:44:05 ,  所有人可见 ,  阅读 13


0


题目描述

给定一个 n×m的方格阵,沿着方格的边线走,从左上角(0,0)开始,每次只能往右或者往下走一个单位距离,问走到右下角 (n,m)一共有多少种不同的走法。

算法

递归思想(这毕竟是函数章节,函数有个重要特性就是递归)
假如我们建立了一个函数A(m,n)来计算走完mn方格的走法,每步都有两种可能,一步之后,我们要重新计算A(m-1,n)和A(m,n-1)的走法,即A(m,n)=A(m-1,n)+A(m,n-1).如此递归,容易发现当走到最右边或最下面时,就只有一种走法,因此我们把n==1或m==1设为递归终点。
(有个小坑,题目要求按线走,节点数是(n+1)
(m+1),所以要加一下。)

#include <iostream>
using namespace std;

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

    int a, b;
    cin >> a >> b;
    a++;
    b++;
    printf("%d", go(a, b));

    return 0;
}

0 评论

App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息