数据结构与算法
文章平均质量分 78
唐BiuBiu
这个作者很懒,什么都没留下…
展开
-
汉诺塔问题的思考
汉诺塔问题是一个经典的递归问题,具体描述请点这里。在已知汉诺塔问题是递归问题的基础上,我们套用递归三定律来解决它:问题的最小规模。最小规模就是两层的汉诺塔。这很好解决。将盘1从柱1移到柱2,将盘2从柱1移到柱3,将盘1从柱2移到柱3,完成。大规模问题向小规模问题演化。三层汉诺塔可以将上面的两个盘子看做一层,这样就变成了两层汉诺塔;四层汉诺塔可以将上面的三个盘子看做一层,这样就变成了两层汉诺塔……不断调用自身通过这个思路,其实不难写出解决这个问题的Python程序def moveTower原创 2021-06-20 22:15:53 · 518 阅读 · 0 评论 -
数据结构与算法 Python(5)
递归Recursion递归是一种解决问题的方法精髓在于:将问题分解为规模更小的相同问题持续分解,直到问题规模小到可以用非常简单直接的方式来解决递归的明显特征就是调用自身精妙的递归算法常会出奇简单,令人赞叹实例1:列表求和给定一个不确定长度的整数列表,返回所有数的和既不能用for,也不能用while,是否能对这个列表求和?这个求和过程实际上是由一次次的加法实现的,而加法有两个操作数,这个是确定的同样是求和问题,但规模发生了变化,符合递归解决问题的特征因此可将求和问题归纳成这样:首原创 2021-06-19 16:11:32 · 91 阅读 · 0 评论 -
数据结构与算法 Python (4)
队列Queue队列是一种有次序的数据集合,其特征是:新数据项的添加总发生在一端(通常称为“尾端rear”)现存数据项的移除总发生在另一端(通常称为“首端”front)队列中入口和出口分别只有一个,不允许数据项直接插入队中,也不允许从队列中间移除数据项数据项加入队列时首先出现在队尾,随着队首数据项的移除,它逐渐靠近队首。这种次序安排的原则称为FIFO(first-in first-out)先进先出用Python中的List实现:class queue(): ''' ADT原创 2021-06-18 21:48:41 · 122 阅读 · 0 评论 -
数据结构与算法 Python(3)
数据结构与算法 Python (3)线性结构线性结构是一种有序数据项的集合,其中每个数据项都有唯一的前驱和后继(首尾项没有前驱或后继)。有的线性结构允许从两端添加或移除,有的只允许从一端添加或移除四种常用的线性结构有:栈stack、队列queue、双端队列deque、列表list1. 栈Stack栈是一种有次序的数据项集合,数据项的加入和移除都仅发生在同一端,这一端叫做栈顶(top),另一端叫做栈底(base)。距离栈底越近的数据项留在栈中的时间越长,这种次序通常称为LIFO(L原创 2021-06-15 13:41:58 · 270 阅读 · 4 评论 -
数据结构与算法 Python (2)
数据结构与算法 Python (2)以变位词判断问题例 分析时间复杂度问题描述:变位词是指两个词之间存在组成字母的重新排列关系。比如heart和earth,python和typhon。解题目标:写一个bool函数,以两个词作为参数,返回这两个词是否为变位词。解法一:逐字检查将词1中的字符逐个到词2中检查是否存在。如果每个字符都能找到,则两个词就是变位词。只要有一个字符找不到,就不是变位词。def anagramSolution1(s1,s2): alist = list(s2原创 2021-06-03 22:20:19 · 243 阅读 · 2 评论 -
数据结构与算法 Python (1)
数据结构与算法 Python1. 求解问题的计算之道自古以来人类在各个方面都会遇到许多未知的事物。比如螃蟹能不能吃,什么是无理数,为什么云不会掉下来,怎样实现公平正义。* 总而言之,**这些问题都可以归纳为what,why,how的问题。**在这些问题中,有些我们已经解决,有些还未解决,有些无法解决。为了解决这些问题,我们也运用了很多手段和方法。比如直观感觉,占卜,计算,模拟仿真…等等。最终我们发现,利用数学方法解决问题是非常准确高效的。因为数学本身符号表达准确严谨,并且推理系统非常严密。虽然数学不是原创 2021-06-01 22:30:20 · 180 阅读 · 1 评论