一些小算法
Yyx@
这个作者很懒,什么都没留下…
展开
-
c语言的一些例题
100个经典的C算法C语言的学习要从基础开始,这里是100个经典的算法题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?__________________________________________________________________程转载 2017-12-20 09:29:32 · 582 阅读 · 0 评论 -
贪心算法
贪心算法顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路经问题,最小生成树问题等。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。问题一转载 2017-12-13 09:26:48 · 252 阅读 · 0 评论 -
递推法
递推法有一类试题,每相邻两项数之间的变化有一定的规律性,我们可将这种规律归纳成如下简捷的递推关系式: Fn=g(Fn-1) 这就在数的序列中,建立起后项和前项之间的关系,然后从初始条件(或最终结果)入手,一步步地按递推关系递推,直至求出最终结果(或初始值)。很多程序就是按这样的方法逐步求解的。如果对一个试题,我们要是能找到后一项与前一项的关系并清楚其起始条件(最终结果),问转载 2017-12-15 08:27:39 · 517 阅读 · 0 评论 -
二分查找
二分查找算法是在有序数组中用到的较为频繁的一种算法,在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,其时间为O(n).但二分查找算法则更优,因为其查找时间为O(lgn),譬如数组{1, 2, 3, 4, 5, 6, 7, 8, 9},查找元素6,用二分查找的算法执行的话,其顺序为: 1.第一步查找中间元素,即5,由于5 2.寻找{6, 7, 8,转载 2017-12-30 21:20:48 · 155 阅读 · 0 评论 -
动态规划
动态规划相信大家都知道,动态规划算法也是新手在刚接触算法设计时很苦恼的问题,有时候觉得难以理解,但是真正理解之后,就会觉得动态规划其实并没有想象中那么难。网上也有很多关于讲解动态规划的文章,大多都是叙述概念,讲解原理,让人觉得晦涩难懂,即使一时间看懂了,发现当自己做题的时候又会觉得无所适从。我觉得,理解算法最重要的还是在于练习,只有通过自己练习,才可以更快地提升。话不多说,接下来,下面我就通过一个转载 2017-12-19 09:35:15 · 209 阅读 · 0 评论 -
Manacher(马拉车)算法
Manacher算法算法总结第三弹 manacher算法,前面讲了两个字符串相算法——kmp和拓展kmp,这次来还是来总结一个字符串算法,manacher算法,我习惯叫他 “马拉车”算法。相对于前面介绍的两个算法,Manacher算法的应用范围要狭窄得多,但是它的思想和拓展kmp算法有很多共通支出,所以在这里介绍一下。Manacher算法是查找一个字符串的最长回文子串的线性算法。在介绍算法之前,首...转载 2018-04-12 18:19:44 · 235 阅读 · 0 评论 -
RSA加密算法
参考链接:https://www.cnblogs.com/jiftle/p/7903762.html大部分copy,选了一下。有个小错误:(3)明文加密 C≡Me(mod n) 应当是C≡M^e(mod n)公式图算法描述:(1)选择一对不同的、足够大的素数p,q。(2)计算n=pq。(3)计算f(n)=(p-1)(q-1),同时对p, q严加...原创 2019-02-27 22:39:11 · 834 阅读 · 0 评论