
——基础算法——
基础算法
Alex_McAvoy
想要成为渔夫的猎手
展开
-
基础算法 —— 递归算法
【概述】递归算法:一种通过重复将问题分解为同类的子问题而解决问题的方法。 适用问题:解决结构自相似的问题。即:构成原问题的子问题与原问题在结构上相似,可以用类似的方法解决。 特点:反复执行、结束反复执行的条件 缺点:占用大量内存且不易阅读【两个问题】递归边界条件(递归终止条件):确定递归到何时终止,或者说,直接有解的情况。 递归模式(递归体):大问题是如何分解为小问题的。注:...原创 2018-04-28 00:38:51 · 1949 阅读 · 0 评论 -
基础算法 —— 高精度计算
【概述】利用计算机进行数值计算,有时会遇到这样的问题:有些计算要求精度高,希望计算的尾数可达到几十甚至几百位,虽然计算机本身精度足够高,但受硬件限制,往往达不到实际问题所要求的精度,因此我们用程序设计的方法去实现这样的高精度计算。除 C++ 高精算法之外,还可以选用 Java 大数类来处理高精问题,而且由于 Python 没有数据类型的限制,因此也可用 Python 来解决高精问题。【...原创 2018-04-12 22:31:56 · 1770 阅读 · 0 评论 -
基础算法 —— 模拟&思维
【概述】模拟,是根据实际问题建立模型,模拟实际按程序走一遍,最终求出答案。思维,则是与逻辑思维有关,其需要针对题意、数据范围等抽丝剥茧抽离出有用的信息,从而得出一个结果。对于一般的模拟,直接根据题意编写即可,但是有些模拟会混有别的部分,思维难度较大,且要注意的细节部分很多,大多数模拟题难度不高,只要选择合适的数据结构,注意细节处理,即可顺利写出程序。而对于思维题,容易陷入思维误区,...原创 2018-10-14 01:29:06 · 4641 阅读 · 1 评论 -
基础算法 —— 递推算法
【概述】递推算法:通过已知条件,利用相邻的数据项间的关系(即:递推关系),得出中间推论,直至得到结果的算法。 递推关系:给定一个数的序列H0,H1,…,Hn,若存在整数N0,使当n>N0时,可以用=/>/<将Hn与其前面的某些项Hi(0<i<n)联系起来。 特点:避开了求通项公式的麻烦,把一个复杂问题的求解,分解成了连续的若干简单运算。 基本思想:把一个复杂...原创 2018-04-23 20:48:32 · 2875 阅读 · 1 评论 -
基础算法 —— 排序算法
【概述】排序是经常涉及到的问题,在实际应用中,大多不需要写一个排序函数,使用 STL 内置的 sort 即可关于排序的具体方法:点击这里【例题】1.与模拟的结合Game of Lines(POJ-3668):点击这里 谁拿了最多奖学金(洛谷-P1051):点击这里 奖学金(洛谷-P1093):点击这里 同题:奖学金(信息学奥赛一本通-T1179):点击这里 出现次数超过...原创 2018-02-08 01:59:49 · 1699 阅读 · 0 评论 -
基础算法 —— 贪心算法
【概述】贪心算法是从问题的初始状态出发,通过若干次的贪心选择而得到的最优值的一种求解策略,即贪心策略。简单来说,贪心策略是一种在每次决策时采取当前意义下最优策略的算法,做出的选择至少在某种约束条件下的局部最优解或较优解,并不一定是全局的最优解或较优解,但在某些特定的情况下,可以利用贪心算法来求得其最优解或较优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心...原创 2019-01-24 21:53:35 · 3136 阅读 · 1 评论 -
基础算法 —— 调度问题
【概述】调度问题根据不同的应用场景分为单车间调度问题、多机调度问题等,其是 NP 难问题,没有最优精确算法。单车间调度问题可表达为:n 个工件在 m 台机器上流水线加工,每个工件在在每个机器上行花费的时间不同,且每个机器同一时刻只能加工一个工件,调度的目标就是确定工件在每台机器上的加工顺序、每个工序的开工时间,使得最大完工时间最小或其他指标达到最优,当 m 台机器简化到 2 台机器时,可利...原创 2019-07-22 15:56:34 · 11066 阅读 · 0 评论