algorithm
ROOOOOOM
room
展开
-
python 插入排序
from typing import List # 插入排序 # 排序结果是从前到后递增 def insertion_sort(a: List[int]): length = len(a) if length <= 1: return # 每次左边已排序区都要往后移动一个位置(while循环)所以for循环中的下标i的位置 # 即a[i]总是右边未排序部分的第一个值 for i...原创 2020-04-04 21:07:53 · 196 阅读 · 0 评论 -
python 动态规划题------求最长上升子序列个数
def len_of_longest_ascending_subsequences(nums): if len(nums)<=1: return len(nums) # 用来存放各个字串的最长上升子序列个数 mem = [0 for _ in range(len(nums))] for j in range(1,len(nums)): for i in ran...原创 2020-01-04 20:06:34 · 1303 阅读 · 0 评论 -
python 动态规划题------求最大连续子串和
def maxSubArray(nums): ''' 求最大子串和 ''' # print(len(nums)) # 如果该串长度为一,和最大的子串就是本身 if len(nums)==1: return nums[0] # 用来存放每次更新的最大子串和 max_ret = nums[0] cur_max = last_max = nums[0] # 状态转移方程,一...原创 2020-01-04 19:11:05 · 1240 阅读 · 0 评论 -
动态规划DP
动态规划问题的解题思路 动态规划问题的复杂性在于各阶段决策之间的相互关 系。如从A点出发有三种选择: B1,B2,或B3。 如果仅考虑1段内 最优, 自然就选从A到B1,但从整 体最优考虑,从A到E的最短路却经过B3,不经过B1。 因此,分段孤立地从本段最优考虑,总体不一定最优。 如果把从A到E的所有可能路线(共18条)都列举 出来,找出最短一条,这不仅费事,而且当阶段数一 多时就很难办到 用动...原创 2019-10-04 03:37:03 · 169 阅读 · 0 评论 -
算法复杂度分类 P NP NPC NPH
P 类问题:所有可以在多项式时间内求解的判定问题构成 P 类问题。判定问题:判断是否有一种能够解决某一类问题的能行算法的研究课题。 NP 类问题:所有的非确定性多项式时间可解的判定问题构成 NP 类问题。非确定性算法:非确定性算法将问题分解成猜测和验证两个阶段。 NPC 问题:NP 中的某些问题的复杂性与整个类的复杂性相关联。这些问题中任何一个如果存在多项式时间的算法,那么所有 NP 问题都是多项...原创 2019-10-03 14:09:34 · 715 阅读 · 0 评论 -
斐波那契数列几种实现算法的对比研究
F(0)=0,F(1)=1, F(n)=F(n–1)+F(n–2)(n≥2) a, b = 0, 1 while a&lt;=100: print(a, end='\n')#print默认end='\n a, b = b, a + b原创 2019-10-03 12:25:35 · 346 阅读 · 0 评论 -
空间复杂度与时间复杂度入门例子
int a = 0, i = N; while (i > 0) { a += i; # 1个操作 i /= 2; #1个操作 } 设该算法共循环了x次,因为i被递归除,所以 2x=Nx=log2N\begin{aligned} 2^{x} &=N \\x &=\log _{2} N \\ \end{aligned}2xx=N=log2N...原创 2019-10-02 16:33:16 · 767 阅读 · 0 评论