python实现猴子爬山算法
猴子爬山一只顽猴在一座有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实现猴子爬山算法相关推荐
- python课程之猴子爬山算法
[问题描述] 猴子爬山一只顽猴在一座有N级台阶的小山上爬山跳跃.上山时需从山脚至山顶往上跳N级台阶,一步可跳1级,或跳2级,或跳3级,求上山有多少种不同的跳法? (N<1000) [输入形式] ...
- python数圈算法_Python实现随机爬山算法
随机爬山是一种优化算法.它利用随机性作为搜索过程的一部分.这使得该算法适用于非线性目标函数,而其他局部搜索算法不能很好地运行.它也是一种局部搜索算法,这意味着它修改了单个解决方案并搜索搜索空间的相对局 ...
- 一文教会你Python 随机爬山算法
随机爬山是一种优化算法.它利用随机性作为搜索过程的一部分.这使得该算法适用于非线性目标函数,而其他局部搜索算法不能很好地运行.它也是一种局部搜索算法,这意味着它修改了单个解决方案并搜索搜索空间的相对局 ...
- 5分钟掌握 Python 随机爬山算法
随机爬山是一种优化算法.它利用随机性作为搜索过程的一部分.这使得该算法适用于非线性目标函数,而其他局部搜索算法不能很好地运行.它也是一种局部搜索算法,这意味着它修改了单个解决方案并搜索搜索空间的相对局 ...
- 爬山算法改进-探测器-python-全局最优解
爬山算法改进 前言 一.爬山算法 二.算法改进-探测器 1.递归寻找局部最优值 2.探测器搜索全局最优值 总结 前言 爬山法(climbing method)是一种优化算法,它一般从一个随机某一点开始 ...
- python跳台阶_递推典型算法:猴子爬山,跳台阶,爬楼梯(牛客网)、魔法深渊(快手)----Python、Java...
递推算法的基本思想是把一个复杂的.庞大的计算过程转化为简单过程的多次重复,其首要问题是得到相邻的数据项之间的关系,即递推关系.以猴子爬山为例. 1.问题的提出 一个顽猴在一座有30级太假的小山上爬山活 ...
- java猴子爬山_[算法]猴子爬山
猴子爬山 问题描述 一只顽猴在一座有50级台阶的小山上爬山跳跃.上山时需要从山脚至山顶往上跳50级台阶,一步可跳2级,或跳3级,或跳4级,求上山有多少种不同的跳法? 下山时从山顶至山脚往下跳50级台阶 ...
- python爬山算法
这篇文章主要介绍了爬山算法,爬山法(climbing method)是一种优化算法,其一般从一个随机的解开始,然后逐步找到一个最优解(局部最优)然后用Python实现了这个算法,需要的朋友可以参考下 ...
- Python编写的数字拼图游戏(含爬山算法人机对战功能)
数字拼图游戏与拼图游戏原理一致,把打乱了的数字或图片经移动,拼成给定的目标数字或图片,其中总有一个空的地方,让相邻(上下左右)的方块移动,直至达到目标. 游戏代码由浙江温州永嘉县教师发展中心应根球老师 ...
最新文章
- pytorch优化器与学习率设置详解
- c#读写XML文件 (转)
- (Head First 设计模式)学习笔记(1)
- Spring MVC DispatcherServlet介绍(2)
- 论文浅尝 - CIKM2020 | Relation Reflection Entity Alignment
- 超干货!为了让你彻底弄懂MySQL事务日志,我通宵肝出了这份图解!
- linux安装yum报错Unable to locate package yum解决方案
- Mac版idea快速切换大小写快捷键
- html画excel表格边框,设置Excel表格和单元格的边框和底纹 html表格单元格边框
- CKEditor 4.12.1富文本编辑器的配置与使用(详细版)
- 镜像翻转_【资讯】装动镜世界版假面骑士时王登场,镜像翻转也算新规?
- 编程计算机公司加乘,实训一计算器编程的实现
- 剑灵M双端一键端开服端
- 虚幻4入门(设置游戏物体的位置,代码施加力和力矩,碰撞)
- 文献管理与信息分析(课堂笔记前六章)
- 心有多大世界就有多大
- Excel如何对一首韩文歌曲进行中文翻译?
- png数据块IHDR_IDAT_END读取
- WordPress收费下载资源插件 vip会员功能/收费下载/收费查看/联盟推广+前端用户中心 支付宝/财付通/贝宝/网银/微信[更新至v9.0.2]
- 【蓝桥杯单片机第十二届国赛真题】