weixin_51623209 2020-12-07 23:40 采纳率: 0%
浏览 11

各位大佬来看看咧,这个用C++数组怎么做出来

1. 第 69 级台阶: 小明刚刚看完电影《第 39 级台阶》,离开电影院的时候,他数了数礼堂前的台阶数是 69 级! 站在台阶前,他突然又想着一个问题: 如果我每一步只能迈上 1 个或 2 个台阶。先迈左脚,然后左右交替,最后一步是迈右 脚,也就是说一共要走偶数步。那么,我要上完 69 级台阶,有多少种不同的上法呢? 请你利用计算机的优势,编程帮助小明找出答案(只需输出一个整数)。

  • 写回答

12条回答 默认 最新

  • 清风未明月 2020-12-08 11:28
    关注

    1,这个电影院挺大的啊,69级台阶,有多高啊。

    2,小明真闲,就赖在影院不走了呗,数69级也是厉害啊。(*^▽^*)

    额。。好像离题了,还是回来解决一下这个问题吧

    这是排列组合的问题,列个草稿计算一下9级台阶的情况就明白了:

    9级台阶第一种:全部走一个台阶:C0,9(上标是0,下标是9,所以有一种走法

                第二种:第一种的基础上,有一步是走两个台阶的,C1,8

                第三种:有两步是走两个台阶,C2,7

                以此类推······

    所以9级台阶是C0,9 + C1,8 + C2,7 + C3,6 + C4,5

    同理,69级是C0,69+C1,68+···+C34,35

    最近不写C++了,给一个python的代码吧,思路一样。

    from scipy.special import comb  # 调用内置包,计算排列组合
    
    total = 69  # 台阶总数
    half = int(total / 2) + 1  # 结束标识
    subscript = total  # 下标
    superscript = 0  # 上标
    ways = 0  # 方法总数
    for x in range(half):
        print(superscript, subscript,int(round(comb(subscript, superscript))))
        # comb是计算排列组合C(X,Y)的一个函数,算出的是浮点数
        # 用round对结果进行四舍五入
        # 用int化为整型
        ways += int(round(comb(subscript, superscript)))  
        subscript -= 1
        superscript += 1
    print(ways)

    结果是:190392490709135

    说实话,有点恐怖,我有点不太相信这个数,不过算9级台阶是对的,请楼主验证。

    用计算器算了几个中间的数,确实很大,应该是对的。

    python计算排列式的这个方法有点问题,算大了可能会出错,我又再用其他方法再保证一下结果的准确性,希望结果是对的吧。。主要是思路正确就行。

    评论

报告相同问题?

悬赏问题

  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,
  • ¥15 angular项目错误