猴子爬山一只顽猴在一座有N级台阶的小山上爬山跳跃。上山时需从山脚至山顶往上跳N级台阶,一步可跳1级,或跳3级,求上山有多少种不同的跳法? (N<50)

问题分析:

每一次都可以选择1,2,3有3种跳法

方法1 直接使用递归

jumpWay = [1, 3]footstep = int(input())jumping = 0#first writedef jump(nowstep, footstep, jumpWay):if nowstep == footstep:global jumpingjumping += 1returnelif nowstep > footstep:returnelse:for i in range(len(jumpWay)):jump(nowstep + jumpWay[i], footstep, jumpWay)jump(0, footstep, jumpWay)

但是这种方式会提示 递归层数过多

想办法对算法进行合理优化,排列组合

方法2 循环全排列

size = int(input())
n3 = size//3
res = 0# 求阶乘
def jiecheng(n):num = 1if n==1:return 1else:for i in range(1,n+1):num*=ireturn num# 求排列
def c43(n4,n3):# return jiecheng# 3!/(4-3)!*3!# j3 = jiecheng(3)return jiecheng(n4)//(jiecheng(n4-n3)*jiecheng(n3))# a32不用了
# def a32(n3,n2):
#    return jiecheng(n2)//jiecheng(n3)-jiecheng(n2)# 循环
for i in range(size+1):# i 为有几个 1步的情况for j in range(n3+1):# j为有 几个 3步的情况if (i+j*3) == size:# temp 为总数temp = j+ires+=c43(temp,j)
print(res)

python实现猴子爬山算法相关推荐

  1. python课程之猴子爬山算法

    [问题描述] 猴子爬山一只顽猴在一座有N级台阶的小山上爬山跳跃.上山时需从山脚至山顶往上跳N级台阶,一步可跳1级,或跳2级,或跳3级,求上山有多少种不同的跳法? (N<1000) [输入形式] ...

  2. python数圈算法_Python实现随机爬山算法

    随机爬山是一种优化算法.它利用随机性作为搜索过程的一部分.这使得该算法适用于非线性目标函数,而其他局部搜索算法不能很好地运行.它也是一种局部搜索算法,这意味着它修改了单个解决方案并搜索搜索空间的相对局 ...

  3. 一文教会你Python 随机爬山算法

    随机爬山是一种优化算法.它利用随机性作为搜索过程的一部分.这使得该算法适用于非线性目标函数,而其他局部搜索算法不能很好地运行.它也是一种局部搜索算法,这意味着它修改了单个解决方案并搜索搜索空间的相对局 ...

  4. 5分钟掌握 Python 随机爬山算法

    随机爬山是一种优化算法.它利用随机性作为搜索过程的一部分.这使得该算法适用于非线性目标函数,而其他局部搜索算法不能很好地运行.它也是一种局部搜索算法,这意味着它修改了单个解决方案并搜索搜索空间的相对局 ...

  5. 爬山算法改进-探测器-python-全局最优解

    爬山算法改进 前言 一.爬山算法 二.算法改进-探测器 1.递归寻找局部最优值 2.探测器搜索全局最优值 总结 前言 爬山法(climbing method)是一种优化算法,它一般从一个随机某一点开始 ...

  6. python跳台阶_递推典型算法:猴子爬山,跳台阶,爬楼梯(牛客网)、魔法深渊(快手)----Python、Java...

    递推算法的基本思想是把一个复杂的.庞大的计算过程转化为简单过程的多次重复,其首要问题是得到相邻的数据项之间的关系,即递推关系.以猴子爬山为例. 1.问题的提出 一个顽猴在一座有30级太假的小山上爬山活 ...

  7. java猴子爬山_[算法]猴子爬山

    猴子爬山 问题描述 一只顽猴在一座有50级台阶的小山上爬山跳跃.上山时需要从山脚至山顶往上跳50级台阶,一步可跳2级,或跳3级,或跳4级,求上山有多少种不同的跳法? 下山时从山顶至山脚往下跳50级台阶 ...

  8. python爬山算法

    这篇文章主要介绍了爬山算法,爬山法(climbing method)是一种优化算法,其一般从一个随机的解开始,然后逐步找到一个最优解(局部最优)然后用Python实现了这个算法,需要的朋友可以参考下 ...

  9. Python编写的数字拼图游戏(含爬山算法人机对战功能)

    数字拼图游戏与拼图游戏原理一致,把打乱了的数字或图片经移动,拼成给定的目标数字或图片,其中总有一个空的地方,让相邻(上下左右)的方块移动,直至达到目标. 游戏代码由浙江温州永嘉县教师发展中心应根球老师 ...

最新文章

  1. pytorch优化器与学习率设置详解
  2. c#读写XML文件 (转)
  3. (Head First 设计模式)学习笔记(1)
  4. Spring MVC DispatcherServlet介绍(2)
  5. 论文浅尝 - CIKM2020 | Relation Reflection Entity Alignment
  6. 超干货!为了让你彻底弄懂MySQL事务日志,我通宵肝出了这份图解!
  7. linux安装yum报错Unable to locate package yum解决方案
  8. Mac版idea快速切换大小写快捷键
  9. html画excel表格边框,设置Excel表格和单元格的边框和底纹 html表格单元格边框
  10. CKEditor 4.12.1富文本编辑器的配置与使用(详细版)
  11. 镜像翻转_【资讯】装动镜世界版假面骑士时王登场,镜像翻转也算新规?
  12. 编程计算机公司加乘,实训一计算器编程的实现
  13. 剑灵M双端一键端开服端
  14. 虚幻4入门(设置游戏物体的位置,代码施加力和力矩,碰撞)
  15. 文献管理与信息分析(课堂笔记前六章)
  16. 心有多大世界就有多大
  17. Excel如何对一首韩文歌曲进行中文翻译?
  18. png数据块IHDR_IDAT_END读取
  19. WordPress收费下载资源插件 vip会员功能/收费下载/收费查看/联盟推广+前端用户中心 支付宝/财付通/贝宝/网银/微信[更新至v9.0.2]
  20. 【蓝桥杯单片机第十二届国赛真题】

热门文章

  1. 10 步让你成为更优秀的程序员
  2. 程序员的创业困境 谁来帮助出出主意?
  3. 周鸿祎详解360手机战略:赚钱不靠硬件靠服务
  4. 时间即财富:创业者浪费精力的八个错误
  5. 内聚的极限: 软件开发的不确定性原理
  6. mybatis3 中 @Provider 的使用方式
  7. easyUI 日期控件修改...
  8. D. Relatively Prime Graph
  9. thinkphp 内置函数详解
  10. CodeSmith终极玩法