随笔分类 -  Python-算法

摘要:神奇的口袋:有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40。 John现在有n(1≤n ≤ 20)个想要得到的物品,每个物品的体积分别是a1,a2 ……an 。John可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John 阅读全文
posted @ 2020-06-10 18:12 StudyNLP 阅读(270) 评论(0) 推荐(0)
摘要:完成的游戏:场景中包括多个长度和高度各不相同的平台。地面是最低的平台,高度为零,长度无限。Jimmy老鼠在时刻0从高于所有平台的某处开始下落,它的下落速度始终为1米/秒。当Jimmy落到某个平台上时,游戏者选择让它向左还是向右跑,它跑动的速度也是1米/秒。当Jimmy跑到平台的边缘时,开始继续下落。 阅读全文
posted @ 2020-06-06 19:26 StudyNLP 阅读(212) 评论(0) 推荐(0)
摘要:完成的游戏:场景中包括多个长度和高度各不相同的平台。地面是最低的平台,高度为零,长度无限。Jimmy老鼠在时刻0从高于所有平台的某处开始下落,它的下落速度始终为1米/秒。当Jimmy落到某个平台上时,游戏者选择让它向左还是向右跑,它跑动的速度也是1米/秒。当Jimmy跑到平台的边缘时,开始继续下落。 阅读全文
posted @ 2020-06-03 19:32 StudyNLP 阅读(166) 评论(0) 推荐(0)
摘要:最佳加法表达式V2描述给定n个1到9的数字,要求在数字之间摆放m个加号(加号两边必须有数字),使得所得到的加法表达式的值最小,并输出该值。例如,在1234中摆放1个加号,最好的摆法就是12+34,和为36输入有不超过15组数据每组数据两行。第一行是整数m,表示有m个加号要放( 0<=m<=50)第二 阅读全文
posted @ 2020-05-30 19:32 StudyNLP 阅读(387) 评论(0) 推荐(0)
摘要:最佳加法表达式V1:描述给定n个1到9的数字,要求在数字之间摆放m个加号(加号两边必须有数字),使得所得到的加法表达式的值最小,并输出该值。例如,在1234中摆放1个加号,最好的摆法就是12+34,和为36输入有不超过15组数据每组数据两行。第一行是整数m,表示有m个加号要放( 0<=m<=50)第 阅读全文
posted @ 2020-05-27 18:55 StudyNLP 阅读(325) 评论(0) 推荐(0)
摘要:最长公共子序列(Longest-Common-Subsequences,LCS)是一个在一个序列集合中(通常为两个序列)用来查找所有序列中最长子序列的问题。最长公共子串(Longest-Common-Substring,LCS)问题是寻找两个或多个已知字符串最长的子串。此问题与最长公共子序列问题的区 阅读全文
posted @ 2020-05-24 10:58 StudyNLP 阅读(460) 评论(0) 推荐(0)
摘要:问题描述一个数的序列ai,当a 1 < a 2 < ... < a S 的时候,我们称这个序列是上升的。对于给定的一个序列(a 1 , a 2 , ..., a N ),我们可以得到一些上升的子序列(a i1 , a i2 , ..., a iK ),这里1 <= i1 < i2 < ... < i 阅读全文
posted @ 2020-05-20 08:00 StudyNLP 阅读(486) 评论(0) 推荐(0)
摘要:数字三角形V3:递归转成递推:思路就是从下往上推,就相当于,从终点往起点推,找每一步的最大值存下来。比如第2步中,2,只能与4,5计算,取其最大值,4+2,5+2,所以是7,存下,后续以此类推最后求到最顶端的值,即是最大路径的值,这样处理,运算速度极快。当然,存储空间还可以优化,有兴趣的大家可以进一 阅读全文
posted @ 2020-05-17 11:03 StudyNLP 阅读(186) 评论(0) 推荐(0)
摘要:数字三角形V2:上一种方法计算会有大量的重复计算,如果数组过大,会超时。7 13 1 8 18 1 1 2 0 12 1 7 3 4 3 4 14 1 5 4 2 6 6 4 5 1如果采用递规的方法,深度遍历每条路径,存在大量重复计算。则时间复杂度为 2 n ,对于 n = 100 行,肯定超时。 阅读全文
posted @ 2020-05-14 06:57 StudyNLP 阅读(189) 评论(0) 推荐(0)
摘要:数字三角形73 88 1 02 7 4 44 5 2 6 5在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或右下走。只需要求出这个最大和即可,不必给出具体路径。三角形的行数大于1小于等于100,数字为 0 - 99输入格式:5 //三角形行 阅读全文
posted @ 2020-05-09 10:15 StudyNLP 阅读(277) 评论(0) 推荐(0)
摘要:描述:农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间依次编号为x1,...,xN (0 <= xi <= 1,000,000,000).但是,John的C (2 <= C <= N)头牛们并不喜欢这种布局,而且几头牛放在一个隔间里,他们就要发 阅读全文
posted @ 2020-05-06 12:02 StudyNLP 阅读(208) 评论(0) 推荐(0)
摘要:快速幂:分治方式的实现其实就是利用递归的原理实现。Python算法实现: 1 def pow(a, b): 2 if b == 0: 3 return 1 4 if b % 2 != 0: 5 return a * pow(a, b - 1) 6 else: 7 t = pow(a, b / 2) 阅读全文
posted @ 2020-05-02 11:07 StudyNLP 阅读(214) 评论(0) 推荐(0)
摘要:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。比如:74386,逆序为:74,73,76,43,86,所以逆序数为:51.直接计数法虽然简单直观,但是其时间复杂度是 O(n^2),如果数据量很大,程序会崩 阅读全文
posted @ 2020-04-29 18:51 StudyNLP 阅读(778) 评论(0) 推荐(0)
摘要:描述给定一个数组包含n个元素,统计前m大的数并且把这m个数从大到小输出。输入第一行包含一个整数n,表示数组的大小。n < 100000。第二行包含n个整数,表示数组的元素,整数之间以一个空格分开。每个整数的绝对值不超过100000000。第三行包含一个整数m。m < n。输出从大到小输出前m大的数, 阅读全文
posted @ 2020-04-22 14:17 StudyNLP 阅读(303) 评论(0) 推荐(0)
摘要:输入n ( n<= 100,000)个整数,找出其中的两个数,它们之和等于整数m(假定肯定有解)。题中所有整数都能用 int 表示解法1:用两重循环,枚举所有的取数方法,复杂度是O(n 2 )的。for(int i = 0;i < n-1; ++i) for(int j = i + 1; j < n 阅读全文
posted @ 2020-04-20 10:14 StudyNLP 阅读(628) 评论(0) 推荐(0)
摘要:二分查找:是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每 阅读全文
posted @ 2020-04-15 15:45 StudyNLP 阅读(140) 评论(0) 推荐(0)
摘要:拓扑排序:对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列, 阅读全文
posted @ 2020-04-11 16:30 StudyNLP 阅读(265) 评论(0) 推荐(0)
摘要:希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。核心思想:希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减 阅读全文
posted @ 2020-04-08 21:42 StudyNLP 阅读(172) 评论(0) 推荐(0)
摘要:计数排序优化版:引用:https://www.cnblogs.com/xiaochuan94/p/11198610.html基础版能够解决一般的情况,但是它有一个缺陷,那就是存在空间浪费的问题。比如一组数据{101,109,108,102,110,107,103},其中最大值为110,按照基础版的思 阅读全文
posted @ 2020-04-04 13:27 StudyNLP 阅读(230) 评论(0) 推荐(0)
摘要:引用:https://www.cnblogs.com/xiaochuan94/p/11198610.html第一步:找出原数组中元素值最大的,记为max。第二步:创建一个新数组count,其长度是max加1,其元素默认值都为0。第三步:遍历原数组中的元素,以原数组中的元素作为count数组的索引,以 阅读全文
posted @ 2020-04-01 21:21 StudyNLP 阅读(153) 评论(0) 推荐(0)