问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python多少种上台阶的方式

发布网友 发布时间:2024-10-01 02:30

我来回答

1个回答

热心网友 时间:2024-10-28 04:13

导读:今天首席CTO笔记来给各位分享关于python多少种上台阶的方式的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

python动态规划及编辑距离计算实例

动态规划的三要素:最优子结构,边界和状态转移函数,最优子结构是指每个阶段的最优状态可以从之前某个阶段的某个或某些状态直接得到(子问题的最优解能够决定这个问题的最优解),边界指的是问题最小子集的解(初始范围),状态转移函数是指从一个阶段向另一个阶段过度的具体形式,描述的是两个相邻子问题之间的关系(递推式)

重叠子问题,对每个子问题只计算一次,然后将其计算的结果保存到一个表格中,每一次需要上一个子问题解时,进行调用,只要o(1)时间复杂度,准确的说,动态规划是利用空间去换取时间的算法.

判断是否可以利用动态规划求解,第一个是判断是否存在重叠子问题。

爬楼梯

假设你正在爬楼梯。需要n阶你才能到达楼顶。

每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?

注意:给定n是一个正整数。

示例1:

输入:2

输出:2

解释:有两种方法可以爬到楼顶。

1.?1阶+1阶

2.?2阶

示例2:

输入:3

输出:3

解释:有三种方法可以爬到楼顶。

1.?1阶+1阶+1阶

2.?1阶+2阶

3.?2阶+1阶

分析:

假定n=10,首先考虑最后一步的情况,要么从第九级台阶再走一级到第十级,要么从第八级台阶走两级到第十级,因而,要想到达第十级台阶,最后一步一定是从第八级或者第九级台阶开始.也就是说已知从地面到第八级台阶一共有X种走法,从地面到第九级台阶一共有Y种走法,那么从地面到第十级台阶一共有X+Y种走法.

即F(10)=F(9)+F(8)

分析到这里,动态规划的三要素出来了.

边界:F(1)=1,F(2)=2

最优子结构:F(10)的最优子结构即F(9)和F(8)

状态转移函数:F(n)=F(n-1)+F(n-2)

classSolution(object):

??defclimbStairs(self,n):

????"""

????:typen:int

????:rtype:int

????"""

????ifn=2:

??????returnn

????a=1#边界

????b=2#边界

????temp=0

????foriinrange(3,n+1):

??????temp=a+b#状态转移

??????a=b#最优子结构

??????b=temp#最优子结构

????returntemp

利用动态规划的思想计算编辑距离。

编辑距离是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。通常来说,编辑距离越小,两个文本的相似性越大。这里的编辑操作主要包括三种:

插入:将一个字符插入某个字符串;

删除:将字符串中的某个字符删除;

替换:将字符串中的某个字符替换为另外一个字符。

那么,如何用Python计算编辑距离呢?我们可以从较为简单的情况进行分析。

当两个字符串都为空串,那么编辑距离为0;

当其中一个字符串为空串时,那么编辑距离为另一个非空字符串的长度;

当两个字符串均为非空时(长度分别为i和j),取以下三种情况最小值即可:

1、长度分别为i-1和j的字符串的编辑距离已知,那么加1即可;

2、长度分别为i和j-1的字符串的编辑距离已知,那么加1即可;

3、长度分别为i-1和j-1的字符串的编辑距离已知,此时考虑两种情况,若第i个字符和第j个字符不同,那么加1即可;如果相同,那么不需要加1。

很明显,上述算法的思想即为动态规划。

求长度为m和n的字符串的编辑距离,首先定义函数——edit(i,j),它表示第一个长度为i的字符串与第二个长度为j的字符串之间的编辑距离。动态规划表达式可以写为:

ifi==0且j==0,edit(i,j)=0

if(i==0且j0)或者(i0且j==0),edit(i,j)=i+j

ifi≥1且j≥1,edit(i,j)==min{edit(i-1,j)+1,edit(i,j-1)+1,edit(i-1,j-1)+d(i,j)},当第一个字符串的第i个字符不等于第二个字符串的第j个字符时,d(i,j)=1;否则,d(i,j)=0。

defedit_distance(word1,word2):

??len1=len(word1)

??len2=len(word2)

??dp=np.zeros((len1+1,len2+1))

??foriinrange(len1+1):

????dp[i][0]=i??

??forjinrange(len2+1):

????dp[0][j]=j

??foriinrange(1,len1+1):

????forjinrange(1,len2+1):

??????delta=0ifword1[i-1]==word2[j-1]else1

??????dp[i][j]=min(dp[i-1][j-1]+delta,min(dp[i-1][j]+1,dp[i][j-1]+1))

??returndp[len1][len2]

edit_distance('牛奶','华西奶')

结果:2

楼梯有15级台阶,可以一次走一级,两级或*,一共有多少种不同的走法

设到第n级台阶有f(n)种走法,则

f(1)=1,f(2)=2,f(3)=4,n=4时

f(n)=f(n-1)+f(n-2)+f(n-3),

您可以编程,求f(15).繁!

楼梯有n阶,可以一步上一阶,两阶,问有多少种不同的走法python语言

deffib_recur(n):

assertn=0,"n0"

ifn=1:

returnn

returnfib_recur(n-1)+fib_recur(n-2)

foriinrange(1,20):

print(fib_recur(i),end='')

python3.x编程

def?f(n,m):

????if?(n!=0):

????????c?=?0

????????if?(nm):

????????????for?i?in?range(n-m,n):

????????????????c?=?c?+?f(i,m)

????????????return?c;

????????else:

????????????for?i?in?range(n):

????????????????c?=?c+f(i,n)

????????????return?c;

????else:

????????return?1;

第7行的缩进调了一下

一个楼梯有10阶台阶,每次只能上1级或者2级,走完这10级台阶共有多少种走法?

89种。

递推:

登上第1级:1种

登上第2级:2种

登上第3级:1+2=3种(前一步要么从第1级迈上来,要么从第2级迈上来)

登上第4级:2+3=5种(前一步要么从第2级迈上来,要么从第3级迈上来)

登上第5级:3+5=8种

登上第6级:5+8=13种

登上第7级:8+13=21种

登上第8级:13+21=34种

登上第9级:21+34=55种

登上第9级:55+34=89种

答:一共可以有89种不同的走法。

应用题是用语言或文字叙述有关事实,反映某种数学关系(譬如:数量关系、位置关系等),并求解未知数量的题目。每个应用题都包括已知条件和所求问题。

以往,中国的应用题通常要求叙述满足三个要求:无矛盾性,即条件之间、条件与问题之间不能相互矛盾;完备性,即条件必须充分,足以保证从条件求出未知量的数值;独立性,即已知的几个条件不能相互推出。

小学数学应用题通常分为两类:只用加、减、乘、除一步运算进行解答的称简单应用题;需用两步或两步以上运算进行解答的称复合应用题。

python爬楼梯求至少多少阶梯

假设你正在爬楼梯。需要n?阶你才能到达楼顶。每次你可以爬1或2个台阶。

注意:给定n是一个正整数。

示例1:

输入:2

输出:2

解释:有两种方法可以爬到楼顶。1阶+1阶和2阶

解题思路:

实现了两种方法,但是第一种超出时间*(?ì_í?),因为递归的时候方法实际计算了两次。两种方法都使用了动态规划思想,比如对于爬10阶楼梯,我们最后一步爬上第10阶只会有两种情况,一种是从9阶楼梯爬1个台阶,一种是从8阶台阶爬2两个台阶上来。所以10阶台阶问题可以划分为爬9阶和8阶两个子问题,一直递归划分到只剩2阶(2种方法)和1阶(一种方法)。

超出时间*的代码:

classSolution:

defclimbStairs(self,n:int)-int:

ifn=2:

ifn==2:

结语:以上就是首席CTO笔记为大家整理的关于python多少种上台阶的方式的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于python多少种上台阶的方式的相关内容别忘了在本站进行查找喔。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
夫妻养狗狗把谁当主人 两人同养狗认谁当主人 什么蔬菜和水果可以美容祛斑呢? vivox60怎么查看参数配置详情 怎样查看vivo手机的屏幕参数? vivo手机怎么看手机参数 vi##手机怎么看配置? 义乌到湖州没有直达快客???必须到南浔?? 湖州到绍兴的汽车有几班? 注销驾考需要本人吗 王者荣耀什么英雄克制裴擒虎 克制英雄分析 三人姐妹头像 不要每张一样 要像一张图片上人物每张类似的 要可爱的动... 帮我找四张姐妹头像(要求人一样的,动作不一样的) 要三姐妹的头像,最好是不同的人,同一个动作,或者李娥灯的姐妹头像,但是... 折叠洗衣机能洗大人厚外套吗 乔丹·博塔卡个人资料 乔丹·梅利什个人简介 笔记本用什么采集卡 jordan和nike什么关系 乔·乔丹个人简介 马山乡到三岔乡多少公里 现在的年轻人适合看那些书? ...九月一号想让小孩在世泽小学上小学不知道需要什么手续知道的麻烦你们... 基金持仓状态什么意思 广东省中山市沙溪镇下泽小学是公办的吗? 中山市下泽小学是公办吗 中山下泽小学怎么样好不好 MASTER'S LONDON DRY GIN 是什么酒 蓝色的瓶子 还有一个像狮子的图标... 哪款平板电脑性价比更高:荣耀平板2还是苹果iPad Pro或三星GALAXY Tab... 哪些家电是你的生活最离不开且幸福感爆棚? 要三张姐妹头像...带字...一张带香,一张带珊,一张带欣,还要有其他字... 姐妹头像两张(两张图片上的人不一样但是是姐妹头像)类似下面的两张 王者荣耀裴擒虎英雄克制及英雄搭配裴擒虎克制哪些 三个姐妹头像,好看点的,最好是三种类型不一样的,比如说(请看图片) leetcode 329. Longest Increasing Path in a Matrix(python) 怎样显示侧边收藏夹栏 机器人工程专业买什么笔记本合适 百度机器人能不能根据以往的图形走势预测以后的 微信的聊天记录怎样才能保存? 一汽大众捷达vs7油耗怎么样 方向盘往左打死不会回位 什么情况 方向盘不会自动回位是什么问题? 奶茶的糖分等级是如何定义的? 最近老是做梦梦见死去的亲人,从棺材里伸手捏自己鼻子,吓得不敢睡,_百... 梦见车祸,两天死人的都是亲人, 石墨基柔性接地体耐用吗?谁买过? 全自动洗衣机怎么用 自动洗衣机的使用方法怎样使用 vieco绿糖的奶瓶是哪里生产的 植物材质奶瓶是什么材质 跑跑卡丁车手游怎么换角色_跑跑卡丁车手游车手更换方法