贪心算法

贪心算法

我对贪心算法的理解就是: 当一个问题比较大时,不能从全局上得到问题的最优解,这个时候就把这个大问题划分成小问题,对于每个小问题都进行求出最优解,最后把这些小问题的最优解整合在一起就是整体的最优解(其实有可能不是最优解,因为有时候并不能证明哪个时最优解,只是从局部上进行最优,最后得到一个近似于最优解的结果) 贪心算法容易和动态规划搞混,我对他们也容易搞混,我是……

KMP匹配算法代码实现

KMP匹配算法代码实现

有需要可以看看,下面是一个测试,(笔记) package 十大算法; import java.util.Arrays; public class KMP { public static void main(String[] args) { String str1="bbc abcdab abcdabcdabde"; String str2="a……

动态规划解决背包问题

动态规划解决背包问题

动态规划算法的核心思想:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法。 下一个子阶段的求解是建立在上一个子阶段的解的基础上的。 计数(有多少种方法)、求最大(小)值、求存在性(存不存在一种策略)这些一般都用动态规划算法解决。 通过填表的方式进行解决 问题:有一个背包,容量为4磅,现有如表物品 物品重量价格吉他(G)11500音响(S……

分治算法汉诺塔问题

分治算法汉诺塔问题

运用分支算法思想,不管有多少个盘,只看作最下面的一个盘和上面的所有盘,总共看作两个盘。 * 括号里的柱子参数不代表每根柱子的位置,* 而是功能,比如第一个参数的柱子是存放原盘的,* 第二个参数是辅助柱子,第三个参数是目标柱子 package 十大算法; public class 分治算法汉诺塔问题 { public static void main……

十大算法之二分查找

十大算法之二分查找

十大算法二分查找算法篇 package 十大算法; public class 二分查找非递归 { public static void main(String[] args) { int arr[] = {1,3,8,10,11,67,100}; int index=find(arr,11); System.out.println(index); }……

图的广度优先遍历

图的广度优先遍历

分层搜索的过程,广度优先遍历需要使用一个队列以保持访问过的节点的顺序,以便按这个顺序来访问这些节点的邻接节点 。 广度优先遍历的步骤 * 1、访问初始节点v并标记节点v为已访问。* 2、节点v入队列* 3、当队列非空时,继续执行,否则算法结束* 4、出队列,取得队头节点u* 5、查找节点u的第一个邻接节点w* 6、若节点u的邻接节点……