
常用算法
爱就码上行动
一个爱好学习知识的小码农
展开
-
kmp算法与暴力算法解决字符串问题
kmp算法解决字符串问题暴力匹配代码如下: public static boolean violencematch(String[] arr1, String[] arr2) { //思路:1.arr1从头遍历到尾,当遇到arr1[i] = arr2[0]时停下来 for (int i = 0; i < arr1.length; i++) { int j = 0; while (arr1[i] == arr2[j] &原创 2020-11-28 00:27:05 · 149 阅读 · 0 评论 -
贪心算法解决集合覆盖问题
贪心算法解决集合覆盖问题问题:假设存在下面需要付费的广播台,以及广播台信号可以覆盖的地区。如何选择最少的广播台,让所有的地区都可以接收到信号广播台覆盖地区K1 “北京,“上海",“天津"K2 “广州,“北京",深圳K3 “成都",“上海”,“杭州K4 “上海,“天津K5 “杭州",“大连”贪心算法的求解思路如下:1)遍历所有的广播电台,找到一个覆盖了最多未覆盖的地区的电台 (此电台可能包含一些已覆盖的地区,但没有关系)2)将这个电台加入到一个集合中(比如Arraylist)原创 2020-11-27 23:27:25 · 222 阅读 · 0 评论 -
动态规划的0-1背包问题求解
动态规划的0-1背包问题求解思路分析和图解:(填表进行思路)算法的主要思想,利用动态规划来解决。每次遍历到的第i个物品,根据w[i]和v[i]问来确定是否需要将该物品放入背包中。即对于给定的n个物品,设v[i]、w[i]分别为第i个物品的价值和重量,C为背包的容量。再令v[i]【j】表示在前i个物品中能够装入容量为j的背包中的最大价值。则我们有下面的结果:代码如下:package com.chen.dynamic;public class BackProblem { public s原创 2020-11-26 23:16:44 · 194 阅读 · 0 评论 -
分治算法(汉诺塔问题为例)
分治算法(汉诺塔问题为例)1.分治算法是一种非常经典的算法思想,可以求解的一些经典问题,比如:二分搜索大整数乘法棋盘覆盖合并排序快速排序线性时间选择最接近点对问循环赛日程表汉诺塔2.分治算法的基本步骤分治法在每一层递归上都有三个步骤:1.分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题2.解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题3.合并:将各个子问题的解合并为原问题的解。3.汉诺塔问题如图:思路:将汉诺塔问题的圆盘分成两原创 2020-11-26 17:14:25 · 297 阅读 · 0 评论