简介:今天,首席执行官指出,要与您分享Python的上层步骤有多少层次。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!
动态计划的三个要素:最佳子结构,边界和状态传输功能。最佳子结构是指从上一个阶段的一个或某些状态的每个阶段的最佳状态(最高问题问题是子问题问题的最大问题。最佳解决方案可以确定该问题的最佳解决方案)。边界是指最小值(初始范围)的解决方案,状态传递函数是指从一个阶段到另一个阶段过度的特定形式。邻域问题之间的关系(递归)
每个子问题仅计算一次重叠的子问题,然后将计算结果保存到表中。每次您需要求解先前的子问题解决方案时,都可以调用它。开销的计划是一种使用时间空间的算法。
确定是否可以通过动态计划来解决,首先是确定重叠是否存在问题。
爬楼梯
假设您正在爬楼梯。您需要n订单才能到达建筑物的顶部。
每次您可以攀登1或2步。您需要爬到建筑物顶部的许多不同方式?
注意:给定n是一个积极的整数。
示例1:
输入:2
输出:2
说明:有两种爬升到建筑物顶部的方法。
1. 1订单 + 1订单
2.步骤2
示例2:
输入:3
输出:3
说明:有三种爬升到建筑物顶部的方法。
1. 1订单 + 1订单 +级别1
2. 1订单 +级别2
3.步骤 + 1级
分析:
假设n = 10,首先考虑最后一步,要么从第九步到第十级,要么从第八级到两个级别。因此,要达到第十步,最后一步必须从第八或第九步开始。也就是说,从地面到第八级的第八步。从地面到第十步,总共有X+Y物种。
也就是说,f(10)= f(9)+f(8)
在这一点上,动态计划的三个要素出现了。
边界:F(1)= 1,F(2)= 2
最佳结构:F(10)最好的子结构,即F(9)和F(8)
状态传输功能:f(n)= f(n-)+f(n-2)
类解决方案(对象):
Def Climbstairs(Self,n):
”“”
:type n:int
:rtype:int
”“”
如果n = 2:
返回n
a = 1#边界
b = 2#边界
温度= 0
对于我的范围(3,n+1):
温度= A+B#状态转移
a = b#结构
b = temp#e t b b b
返回温度
通过动态计划计算编辑距离。
编辑器之间的距离是指可以在两个字符串之间转换为另一个字符串之间的编辑操作的数量。从通常的话来说,编辑距离越小,这两个文本的相似性就越大。此处的编辑操作主要包括三种类型:
插入:将角色插入字符串中;
删除:删除字符串中的字符;
替换:将字符串中的字符替换为另一个字符。
因此,如何计算与Python的距离?我们可以从更简单的情况下进行分析。
当两个字符串都是空字符串时,编辑距离为0;
当一个字符串为空时,编辑距离是另一个非空字符串的长度;
当两个字符串是非空字符(长度i和j)时,可以采取以下三种情况的最小值:
1.已知i-1和j的字符串长度的编辑距离,然后添加1个;
2.已知i和j-1字符串长度的编辑距离,然后添加1个;
3.已知I-1和J-1字符串字符串的编辑距离。目前,考虑了两种情况。如果I-I与J-Character不同,则可以添加1个;如果是相同的,然后,然后,然后,然后,然后就不需要添加1。
显然,上述算法的想法是动态计划。
找到具有m和n长度的字符串的编辑距离。首先,定义函数-edit(i,j),该函数代表字符串之间的编辑器,其第一个长度和j字符串的第二个长度j.distance.Dymanic计划表达式可以写为:
如果i == 0和j == 0,请编辑(i,j)= 0
如果(i == 0和j 0)或(i 0和j == 0),edit(i,j)= i + j
如果我≥1和j≥1,请编辑(i,j)== min {edit(i-1,j) + 1,edit(i,j-1) + 1,edit(i-1,j-1)) + d(i,j)}。当第一个字符串的i -i -i字符不等于第二个字符串的j的j的j时,d(i,j)= 1;否则,d(i,j)= 0。
DEF EDIT_DISTANCE(Word1,Word2):
len1 = len(word1)
len2 = len(word2)
dp = np.zeros(((len1 + 1,len2 + 1)))
对于我的范围(len1 + 1):
dp [i] [0] = i
对于J范围(LEN2 + 1):
DP [0] [J] = J
对于我的范围(1,len1 + 1):
对于J范围(1,LEN2 + 1)的J:
delta = 0如果word1 [i-1] == word2 [j-1]其他1
dp [i] [j] = min(dp [i -1] [j -1] + delta,min(dp [i -1] [j] + 1,dp [i] [j -1] + 1)治愈
返回DP [LEN1] [LEN2]
edit_distance('牛奶','huaxi牛奶')
结果:2
设置为nn步骤,有一个f(n)物种,然后
f(1)= 1,f(2)= 2,f(3)= 4,n = 4
f(n)= f(n-)+f(n-2)+f(n-3),
您可以编程,找到F(15)。扇子!
def fib_recur(n):
断言n = 0,“ n 0”
如果n = 1:
返回n
返回fib_recur(n-1) + fib_recur(n-2)
对于我的范围(1,20):
打印(fib_recur(i),end ='')
def f(n,m):
如果(n!= 0):
C = 0
如果(nm):
对于我的范围(n-m,n):
C = C+F(i,m)
返回c;
别的:
对于(n)范围内的我:
C = C+F(i,n)
返回c;
别的:
返回1;
第7行的第七端已调整
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种不同的方法。
应用问题正在描述语言或文本中的事实,以反映某种数学关系(例如:数量关系,位置关系等),并解决未知数量的问题。每个应用程序问题包括已知条件和提出问题。
过去,中国的申请问题通常需要叙述来满足三个要求:在条件和问题之间没有矛盾,也不是矛盾的;即完整性,条件必须足够,足以确保从条件中找到未知值。独立性,也就是说,几个已知条件不能相互启动。
小学数学应用程序问题通常分为两类:仅使用加法,减法,乘法和一个步骤操作的简单应用问题;需要通过两个或两个步骤回答的复合应用问题。
假设您要爬楼梯。
注意:给定n是一个积极的整数。
示例1:
输入:2
输出:2
说明:有两种爬升到建筑物顶部的方法。Level1 + 1订单和2级
解决方案想法:
实现了两种方法,但是第一种方法超过了时间限制(?确实),因为重新出版时实际上计算了两次方法。两种方法都使用动态计划思想。例如,对于攀登10个楼梯,在最后一步中只有两种攀爬阶段到第10级。两个步骤在步骤中爬上。和第8步。它仅递归分为2个步骤(2个方法)和1个顺序(一种方法)。
代码随时间限制:
类解决方案:
Def Climbstairs(self,n:int) - int:
如果n = 2:
如果n == 2:
结论:以上是首席CTO注释为每个人编写的Python的全部内容。感谢您阅读本网站的内容。我希望这对您有帮助。关于Python有多少级别的更多信息,请不要忘记在此网站上找到它。