算法
主要指算法导论中涉及到的算法
Lei_yiyi
稀里糊涂,误打误撞
展开
-
动态规划 —— 硬币找零(python3)
动态规划 —— 硬币找零动态规划硬币找零动态规划如果我们有面值为1元、3元和5元的硬币若干枚,如何用最少的硬币凑够11元?用d(i)=j 表示凑够 i 元最少需要 j 个硬币,求解过程如下:当 i=0,表示凑够0元最小需要0个硬币d(0)=0当 i=1,只有面值为1元的硬币可用,因此拿起一个面值为1的硬币,接下来只需要凑够0元即可d(1)=d(1-1)+1=d(0)+1=0+1=1当 i=2,仍然只有面值为1的硬币可用,于是拿起一个面值为1的硬币, 接下来只需要再凑够2-1原创 2020-05-27 14:58:58 · 1411 阅读 · 0 评论 -
快速排序 —— 将列表按从小到大的顺序排列(python3)
快速排序 —— 将列表按从小到大的顺序排列快速排序将列表按从小到大的顺序排列快速排序先从数列中取出一个数作为基准数。分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。再对左右区间重复第二步,直到各区间只有一个数。将列表按从小到大的顺序排列题目:用快速排序的方法将列表按从小到大的顺序排列分析:分片 + 递归这是取了第一个为基准值实现:def quicksort(list): if len(list)<2: return lis原创 2020-05-26 11:37:02 · 5467 阅读 · 0 评论 -
二分查找 —— 查找指定元素在列表(已排序)中的位置(python3)
二分查找 —— 查找指定元素在列表(已排序)中的位置二分查找查找指定元素在列表(已排序)中的位置二分查找查找指定元素在列表(已排序)中的位置题目:给出一个已经排好序的列表,用二分查找方法查找指定元素在列表中的位置分析:二分查找就是将查找的键和子数组的中间键作比较,如果被查找的键小于中间键,就在左子数组继续查找;如果大于中间键,就在右子数组中查找,否则中间键就是要找的元素。实现:def binary_search(list, item): low = 0 high = len(原创 2020-05-26 09:21:06 · 2380 阅读 · 0 评论 -
Step-wise线性搜索 —— 杨氏矩阵查找(python3)
斐波那契 —— 跳台阶问题、变态跳台阶、矩形覆盖斐波那契跳台阶问题斐波那契斐波那契数列:1、1、2、3、5、8、13、21、34、…即:f(n)=1,n=1,2 f(n) = 1, n=1,2 f(n)=1,n=1,2f(n)=f(n−1)+f(n−2),n>2 f(n) = f(n-1)+f(n-2),n>2 f(n)=f(n−1)+f(n−2),n>2跳台阶问题题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。分析:假原创 2020-05-25 20:11:29 · 365 阅读 · 0 评论 -
斐波那契 —— 跳台阶、变态跳台阶、矩形覆盖(python3)
1,1,2,3,5,8,13…(第1项和第2项都为1,以后的项都是前面两项之和)递推公式如下:f(n)=1,n=1,2f(n) = 1, n=1,2f(n)=1,n=1,2f(n)=f(n−1)+f(n−2),n>2f(n) = f(n-1)+f(n-2),n>2f(n)=f(n−1)+f(n−2),n>2原创 2020-05-20 15:44:24 · 191 阅读 · 0 评论 -
航班预订统计(python3)
题目描述有 n 个航班,分别从 1 到 n 进行编号。有一份航班预订表,表中第 i 条预订记录 bookings[i] = [i, j, k] 意味着在从 i 到 j 的每个航班上预订了 k 个座位。按航班编号顺序返回每个航班上预订的座位数。示例输入:31 2 32 4 21 2 3输出:1 62 83 24 2代码import sysfrom collect...原创 2020-04-29 19:43:48 · 438 阅读 · 0 评论 -
字符串合并与索引(python3)
string = input().split(',')ll = string[0]indexes = [0]for i in string[1:]: n = ll.find(i) if n == -1: indexes.append(len(ll)+1) ll = ll + '#' + i else: indexes.a...原创 2020-04-29 16:14:22 · 151 阅读 · 0 评论