介绍些简单有用的算法

来源:百度知道 编辑:UC知道 时间:2024/05/22 05:48:30
刚刚开始在ACMOJ上刷题,可是算法什么都不懂,我想了解点有用的算法。比如高精度,大整数,排序,查找。还有什么简单但是重要的啊?不胜感激

别学了。。……我上高中都比你会的多,人家很多人都是从小学初中就学,学了无数年,然后参加ACM,您学几天根本不是对手……

至于您说的那些算法,没有一个是麻烦的,必须全部无条件掌握。

我可以提供一些呀。。

SORT:
快速排序,归并,堆排序,插入排序,冒泡排序,选择排序

二叉树:
前序,中序,后序 遍历

图:
DFS和 BFS,其他的对于初学者比较麻烦

高精度算法:
+-*/你都得会,还有一个叫做快速幂的算法必须会(不一定是高精,还包含快速幂取模,即a^b mod n 在O(log(b))内解决)

算法还有一些,就是算法类的。

动态规划(DP)
按照我的名字来搜
LCS(最长不下降序列)
LCS(最长公共子序列)
LSS(最大子段和,不列入DP)
背包(很多种,都要掌握)
石子归并(两个,圈和非常,圈就是拆圈的算法,即拉成长链)

这些是初学者可以接受的

贪心:
图论算法(可能相对比较复杂):Dijstra Prim
当然图论还有别的算法
最短路:SPFA(我常用,前向星数据结构) Dijstra Bellman-Ford Floyed(包括一个叫做最小环的算法)
最小生成树:Prim Kruskal(主流)
贪心有类区间调度问题是初学者可以接受的

数论:
求a^b mod n(快速幂求模)
gcd(a,b) lcm(a,b)最大公约数和最小公倍数
素数判定(确定型和概率型)
素数筛法

不知道为啥说了这么多。。我的意见是,有兴趣您学学,不要太浪费时间了……无数人都比你早学很多很多年。

心算、口算、计算器算

最简单的,冒泡方法,你可以搜搜

算两位数5字结尾的两个相同数算法:先把5尾相乘写下来,在把头数的其中一个加一,在与另一个相乘写下来方可.