方格运动问题

2023-10-27

常见的一个经典问题:

给定一个方格子。另左上角坐标为(0,0),右下角坐标为(M,N),从左上角开始每次只能向右走或者向下走,最后达到右下角的位置。求一共有多少种不同的路径?

数学的想法

对于计算这个问题的时候,可以去思考,不管怎样,从上往下从左往右,一共要走M+N步,那么,只需要去考虑,哪几步朝下,哪几步向右就可以了。运用排列得公式直接写作 C M + N M C_{M+N}^{M} CM+NM或者是 C M + N N C_{M+N}^{N} CM+NN即可。

代码

运用代码来写递归的方式同样可以计算
python代码如下 代码片:

import numpy as np
import pandas as pd

def get_num(i):
    k = input('请输入{},若希望终止请输入 \'False\' :'.format(i))
    k = k.upper()
    if k == 'FALSE':
        return False
    try:
        k=float(k)
    except ValueError as reason:
        print('输入有误,请输入整数值:')
        return get_num(i)
    if k==int(k):
        k=int(k)
    else:
        print('输入有误,您输入的数值为浮点数,请输入整数值')
        return get_num(i)
    return k

def Coordinate_acqu():
    coordinate_name=[['begin_point_X','begin_point_Y'],['end_point_X','end_point_Y']]
    coordinate = np.zeros((2,2)).tolist()
    for point in range(len(coordinate_name)):
        for pointk in range(len(coordinate_name[point])):
            coordinate[point][pointk] = get_num(coordinate_name[point][pointk])
            if coordinate[point][pointk] is False:
                return False
    return coordinate
     

def num_count(begin_point,end_point):   #其实也就只有这个地方的是主要的内容,其他都没什么用
    '''
    func:迭代计算不同路径的总数
    paramter:
    begin_point:起始坐标
    end_point:终止坐标
    return:路径的总数
    '''
    if begin_point[0]>end_point[0] or begin_point[1]>end_point[1]:
        return 0
    if begin_point==end_point:
        return 1
    else:
        return num_count([begin_point[0]+1,begin_point[1]],end_point)+ \
                num_count([begin_point[0],begin_point[1]+1],end_point)

if __name__=='__main__':
    point = Coordinate_acqu()
    if point is False:
        print('输入的内容有误,程序已经终止')
    else:
        [begin_point,end_point]= point
        a ='='*50
        print('\n',a,end='\n\n')
        print('输入的初始坐标为:{}\n输入的终止坐标为:{}'.format(begin_point,end_point))
        num = num_count(begin_point,end_point)
        print('所走的总的不同路径共有 {} 种'.format(num))




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

方格运动问题 的相关文章

随机推荐

  • c#数据类型

    数据类型 值类型 int float bool sizeof 查询变量占内存大小 一字节 8比特位 float 单精度浮点数 doublle 结构体 struct Student 访问类型 public公开 private类或结构体内部 i
  • bootstrap知识总结

    Bootstrap框架 一 Bootstrap简介 Bootstrap是一个用于快速开发Web应用程序和网站的前端框架 Bootstrap是基于HTML CSS JavaScript的 二 Bootstrap 特点 1 跨设备 跨浏览器 可
  • Angular4之动画

    在angular里面 动画的本质 是在一定时间 由一个状态转换到另一个状态 期间的过渡效果就是显示出来就是动画 例如 import Component Input from angular core import trigger state
  • 基于MCGS与PLC的四路抢答器

    实验要求 四路抢答器每一位抢答的选手都有一个抢答按钮 1号抢答按钮为SB1 2号抢答按钮为SB2 3号抢答按钮为SB3 4号抢答按钮为SB4 以及各位抢答选手的指示灯 主持人的位置设有抢答开始按钮SB5以及清零按钮SB6 另外系统中 有一个
  • 读《影响力》西奥迪尼---笔记

    读 影响力 西奥迪尼 笔记 1 本书框架 包括互惠 承诺与一致 社会认同 喜爱 权威 稀缺六大影响力武器 2 文书意图 从原理 成因上讲述这六个影响力武器对我们的影响 以及商家或者其他想要获利的如何利用影响力武器获取利益 意图说服我们如何拒
  • dvwa靶场通关(十二)

    第十二关 Stored Cross Site Scripting XSS 存储型xss low 这一关没有任何防护 直接输入弹窗代码 弹窗成功 medium 先试试上面的代码看看 有没有什么防护 发现我们的script标签不见了 应该是被过
  • 在JSP编译的时候,服务器内部做了什么?

    在JSP第一次获得请求时 不管请求来自于客户端浏览器还是服务器上的servlet JSP文件将被JSP引擎 JSP engine 转换成为一个servlet 而这个引擎本身也是一个servlet 在JSWDK 它就是 JspServlet
  • OpenCV - Mat、滤波、卷积的实现

    1 Mat数据类型 创建图像 Mat M 2 2 CV 8UC3 Scalar 0 0 255 改变图像尺寸 M create 4 4 CV 8UC2 快速创建图像的集中方法 Mat E Mat eye 4 4 CV 64F Mat F M
  • 子网掩码详解

    IP地址 IP地址被用来给Internet上的电脑一个编号 大家日常见到的情况是每台联网的PC上都需要有IP地址 才能正常通信 我们可以把 个人电脑 比作 一台电话 那么 IP地址 就相当于 电话号码 而Internet中的路由器 就相当于
  • C++设计模式

    设计模式有 6 大设计原则 单 职责原则 就 个类 应该仅有 个引起它变化的原因 开放封闭原则 软件实体可以扩展 但是不可修改 即 对需求 对程序的改动可以通过增加代码来完成 但是不能改动现有的代码 代换原则 个软件实体如果使 的是 个基类
  • HTML和CSS实现京东登录页面(html,css代码详解)

    HTML代码 基本布局 QQ 2248557717 下载链接地址 https download csdn net download dwjdj 15807158
  • STM32 C语言使用 memset清空结构体 导致改变其他结构体数据的问题

    首先 在C语言中 清空结构体的方法 我们一般会采用 memset函数 其原型是 void memset void ptr int value size t num 函数功能 填充内存块 将ptr指向的内存块的前num个字节设置为指定值 va
  • 2021年华中杯A题(马赛克瓷砖选色问题)详细分析

    目录 一 基本介绍 1 1 题目描述 1 2 待解决问题 二 问题分析与求解 2 1 问题一分析与求解 2 2 问题二分析与求解 2 3 问题三分析与求解 三 完整代码 四 总结 一 基本介绍 1 1 题目描述 马赛克瓷砖是一种尺寸较小 常
  • 七、JDK1.7中HashMap扩容机制

    导读 前面文章一 深入理解 Java集合初篇 中我们对Java的集合体系进行一个简单的分析介绍 上两篇文章二 Jdk1 7和1 8中HashMap数据结构及源码分析 三 JDK1 7和1 8HashMap数据结构及源码分析 续 中我们分别对
  • 基于货运APP的全栈开发实践:后端用PHP,前端用Uni-app实现兼容性

    在上一篇文章中 我们介绍了货运APP如何助您提高运输效率 本文将重点介绍该货运APP的技术实现 并探讨后端和前端所使用的技术以及如何实现兼容性 后端技术实现 PHP 货运APP的后端采用PHP作为开发语言 下面是一些关键点的介绍 服务器环境
  • [MySQL]存储过程与函数

    文章目录 1 存储过程概述 1 1 含义 1 2 执行过程 1 3 好处 1 4 与视图 函数的对比 1 5 存储过程的分类 2 创建存储过程 2 1 语法 2 2 设置结束标志 2 3 创建存储过程示例 2 3 1 准备工作 2 3 2
  • 闲扯测试工程师之发展(觉得不错,拿来与大家分享)

    一 测试工程师的历史 我算是接触互联网测试工作比较早的一批人了 在2010年研二实习的时候就开始在一家加拿大的企业做测试开发工程师了 2012年毕业的时候 貌似互联网行业开始有专职的测试人员 而且不少中小型公司还没有专职的测试人员 程序的质
  • Java输入char类型的方法

    C 中可以用输入流cin轻松的完成对int char String double等等基本数据类型的输入 而JAVA中则必须使用Scanner类 头文件java util Scanner 对于其他的数据类型Scanner类提供了直接的函数使用
  • 充电器 蓝桥杯十四届模拟 python

    问题描述 小蓝有一个充电器 可以使用不同的电压和电流充电 给定充电器工作的记录 请计算在这个记录期间总共通过充电传输了多少电能 输入格式 输入第一行包含一个整数 n 表示记录的条数 接下来 n 行 每行包含一个时刻 T 和两个非负整数 U
  • 方格运动问题

    常见的一个经典问题 给定一个方格子 另左上角坐标为 0 0 右下角坐标为 M N 从左上角开始每次只能向右走或者向下走 最后达到右下角的位置 求一共有多少种不同的路径 数学的想法 对于计算这个问题的时候 可以去思考 不管怎样 从上往下从左往