随笔- 67
文章- 0
评论- 0
阅读-
12583
随笔分类 - Java算法
递推法与递归法
摘要:递归算法 递归算法是一种从自顶向下的算法 ,实际上是通过不停的直接调用或者间接的调用自身的函数,通过每次改变变量完成多个过程的重复计算,直到到达边界之后,结束调用。 与递推法相似的是,递归与递推都是将一个复杂过程分解为几个简单重复步骤进行计算。 实现的核心是分治策略,即分而治之,将复杂过程分解为规模
阅读全文
打表法和模拟法
摘要:打表法和模拟法 例题1: 题目描述: 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 看这个算式: ☆☆☆ + ☆☆☆ = ☆☆☆ 如果每个五角星代表 1 ~ 9 的不同的数字。这个算式有多少种可能的正确填写方法? 173 + 286 = 459 295 + 173 = 4
阅读全文
内置模板
摘要:内置模板 1. Vector 容器(类),主要作用就是可变长度的数组,就把他当成数组使用 //第一种构造方法创建一个默认的向量,默认大小为 10: Vector() //第二种构造方法创建指定大小的向量。 Vector(int size) //第三种构造方法创建指定大小的向量,并且增量用 incr
阅读全文
栈(stack) 先进后出
摘要:栈(stack) 先进后出 栈:只允许在一端进行插入、删除操作的线性表。 空栈:不含任何数据元素的栈。 允许插入(也称进栈、压栈、入栈)、删除(也称出栈)的一端称为栈顶。 1. 用数组模拟栈的实现: 小邋遢的衣橱 小邋遢 MS.Jinlin 是个爱打扮的公主,他有很多晚礼服如"LALA" "NIHA
阅读全文
枚举法
摘要:枚举法 枚举算法解题的基本思路: 确定枚举解的范围,以及判断条件 选取合适枚举方法,进行逐一枚举,此时应注意能否覆盖所有的可能的解,同时避免重复。 在枚举时使用判断条件检验,留下所有符合要求的解。 1. 简单型枚举 就是可以通过简单的 for 循环嵌套就可以解决的问题 42 点问题 题目描述: 众所
阅读全文
组合的递归算法
摘要:组合的递归算法 1. 无重复项的组合 以数组a[5]={1,2,3,4,5}为例,用C(5,num)表示从这5个数中选择num个数,求其所有的情况。 首先要明确,求一组数的组合问题,元素是没有位置要求的,即对于C(5,3)的求解{1,2,3}和{3,2,1}是一种情况。因此,为了防止结果的多余项,必
阅读全文
差分与前缀和
摘要:差分与前缀和 1. 差分法 (解决区间加减问题) 当某一个数组要在很多不确定的区间,加上相同的一个数。我们如果每个都进行加法操作的话,那么复杂度 O(nm) 是平方阶的,非常消耗时间。 **如果我们采用差分法,将数组拆分,构造出一个新的拆分数组,通过对数组区间的端点进行加减操作,最后将数组和并就能完
阅读全文
二分法实例
摘要:二分法实例 分巧克力 题目描述 儿童节那天有 K 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一共有 N 块巧克力,其中第 i 块是 Hi×Wi 的方格组成的长方形。为了公平起见,小明需要从这 N 块巧克力中切出 K 块巧克力分给小朋友们。切出的巧克力需要满足: 形状是正方形,边长
阅读全文
贪心样例
摘要:贪心算法的实例练习 贪心算法与枚举法的不同之处在于每个子问题都选择最优的情况,然后向下继续进行,且不能回溯,枚举法是将所有情况都考虑,然后选出最优的情况。 贪心算法,在对问题求解时,不从整体考虑,而是采用一叶障目的选择方式,只选择某种意义上的局部最优解。并且,贪心算法是没有固定的模板可以遵循的,每个
阅读全文
贪心算法
摘要:贪心算法 贪心算法(又称贪婪算法)是指,在对问题求解时,在每一步选择中都采取最好或最优/最有利的选择,从而希望能够导致结果是最好的算法。 贪心算法的特点是一步一步地进行,常以当前情况为基础根据某个优化测度作最优选择,而不考虑各种可能的整体情况,省去了为找最优解要穷尽所有可能而必须耗费的大量时间。贪心
阅读全文
动态规划
摘要:动态规划(DP) 动态规划,(Dynamic Programming) : 通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。 分治与动态规划 共同点:二者都要求原问题具有最优子结构性质,都是将原问题分而治之,分解成若干个规模较小(小到
阅读全文
分治算法
摘要:分治算法 分治法,字面意思是**“分而治之”**,就是把一个复杂的问题分成两个或多个相同或相似的子问题,再把子问题分成更小的子问题直到最后子问题可以简单地直接求解,原问题的解即子问题的解的合并。 由分治法产生的子问题往往是原问题的较小模式,这就为使用递归技术提供了方便。反复应用分治手段,可以使子问题
阅读全文
二分查找
摘要:二分查找(又称折半查找) 1. 适用场景:顺序存储结构且按有序排列 2. 查找过程: 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一
阅读全文