![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
我叫向同学
永远不要停下前进的脚步
展开
-
MySQL索引背后的数据结构及算法原理
推荐一篇写的很好的文章关于MySQL索引背后的数据结构及算法原理博客地址转载 2020-11-29 17:40:57 · 82 阅读 · 0 评论 -
C语言之回文数算法的实现
问题描述“回文”是指正读反读都能读通的句子。它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这种特征,成为回文数(palindrome number)。设n是一随意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。比如,若n=1234321,则称n为一回文数。但若n=1234567,则n不是回文数。算法设计#include <stdio.h>#define true 1 #define false 0原创 2020-11-27 13:12:52 · 2215 阅读 · 2 评论 -
水仙花数的实现(C语言)
这几天笔试,突然看到了水仙花束,完蛋,以前学的都忘记了,今天就来复习一下子。问题描述输出所有的“水仙花数”,所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身,例如153是“水仙花数”,因为:153 = 13 + 53 + 33。算法设计“水仙花数”是指满足某一条件的三位数,根据这一信息可以确定整数的取值范围是 100〜999。对应的循环条件如下: for(n=10; n<1000; n++) { //...... }对代码的说明:将n原创 2020-11-24 16:45:33 · 36734 阅读 · 8 评论 -
【动态规划法】之01背包问题java实现
问题描述给定n种物品和一个背包。物品i的重量是Wi,其价值为Vi背包的容量为C。问如何选择装入背包中的物品,使得装入背包中物品的总价值最大?01背包问题的目标是使背包中物品的价值最大。约束条件有两个:一是物品的重量不能超出背包的容量。二是物品只能整体放入背包,不能部分放入。问题分析(1)最优子结构反证法设(y1,y2,……,yn)是所给01背包问题的一个最优解,则(y2,y3,……,yn)是子问题的一个最优解。子问题满足以下条件:一是物品的总价值是物品y2,y3,……,yn的总价值和;二是物品的原创 2020-05-19 10:35:10 · 2758 阅读 · 0 评论 -
【动态规划法】之矩阵连乘java实现
文章目录动态规划基本概念动态规划与分治法异同:举例说明动态规划的基本要素动态规划步骤矩阵连乘描述问题分析java代码动态规划基本概念动态规划(DP:Dynamic Programming):是一种重要的程序的设计手段,其基本思想是在对一个多阶段决策的问题,按照某一顺序,根据每一步所选决策的不同会引起状态的转移,最后会在变化的状态中获取到一个决策序列。动态规划是一种把多阶段过程转化为一系列单阶段问题,逐个求解的方法,广泛应用于生产调度,工程技术和最优控制等领域。动态规划与分治法异同:相同点:都是将问原创 2020-05-15 14:38:04 · 3156 阅读 · 2 评论 -
【分治法】棋盘覆盖问题java实现
文章目录问题描述问题分析算法设计java代码问题描述在一个2k × 2k个放个中,恰好只有一个方格是残缺的。也就是在这个棋盘中有一个方格与其它的格子不同, 我们称这种棋盘为残缺棋盘。下图所示k=2时,也就是一个22 × 22的棋盘,其中第一行第二列这个方格为一个与众不同的方格。覆盖是指,用L型骨牌覆盖残缺棋盘上所有方格,覆盖是要求二任何两个L型骨牌不能重叠。问题分析首先分析一下用于覆盖的骨牌的情况,那么L型骨牌有几种了?观察发现,L型骨牌是可以旋转的。经过旋转后有四种情况,如下图所示,残原创 2020-05-14 10:25:29 · 3237 阅读 · 1 评论 -
【分治法】二分搜索技术java实现
搜索问题问题描述:给定已按升序排好序的n个元素a[0:n-1],搜索一特定元素x要求:对该问题设计有效的求解算法,并分析算法在最坏情况的时间复杂性。顺序查找举例1,设n=6,a=[1,3,5,6,7,9],搜索问题当前情况下,进行搜索的话,对数组当中的元素可以依次扫描。最好的情况是数组当中第一个元素就是要搜索的元素x,只需要比较一次,最坏的情况下,从头扫到尾,这个时候在找到了元素x,或者元素x不存在,此时需要n次比较。复杂性0n)是线性级别的。那么能不能进一步改进呢?我们发现在顺序查找中,没有原创 2020-05-13 11:04:32 · 1506 阅读 · 0 评论 -
分治法基本思想(汉诺塔问题 Tower of Hanoi)
文章目录前言基本思想适用的问题求解步骤分治法要点时间复杂性分析举例-汉罗塔问题(Tower of Hanoi)问题描述解决步骤java代码前言分治法来源于孙子兵法谋攻篇中写道——十则围之,五则攻之,倍则战之,敌则能分支。讲述的是敌军对战时用兵的原则,如果有十倍的兵力围殴他,五倍的兵力仅供他,在兵力相当的情况下,应该考虑分而治之,各个击破,其体现出来的思想,称为分治法基本思想那么分治法的基本思想是什么呢?将一个难以直接解决的大问题,分割成一些规模较小的相同的问题,以便各个击破,分而治之。 通俗的来说就原创 2020-05-11 16:59:07 · 1981 阅读 · 0 评论 -
【贪心算法】哈夫曼编码问题
问题描述哈夫曼编码是广泛地用于数据文件压缩的十分有效的编码方法。其压缩率通常在20%~90%之间。哈夫曼编码算法用字符在文件中出现的频率表来建立一个用0,1串表示各字符的最优表示方式。一个包含100,000个字符的文件,各字符出现频率不同,设某信源产生a,b,c,d和f 6种符号,其频率见下表,单位为千次。从表中可以看出a字符出现的频率最高——45千次,f出现的频率最低——5千次。要区分6种不同的字符需要长度为3的0-1字符串表示,因此很自然的想到将a编码为000,b编码为001,依此类推。这种一视原创 2020-05-09 21:47:11 · 19222 阅读 · 9 评论 -
【贪心算法】最优装载问题C++语言
文章目录问题描述算法步骤举例代码问题描述有一批集装箱要装上一艘重量为c的轮船。已知集装箱i(1<=i<=n)的重量为Wi,最优装载问题要求在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。问题分析抽象的数学模型为最优装载问题:n个集装箱E{1,2,…n},选出E的子集合,将尽可能多的集装箱装上轮船贪心策略为重量最轻集装箱优先装载,从而给灭有装船的集装箱留下尽可能多的余量算法步骤1、将集装箱按照重量的非减序排列2、依次从剩下的集装箱中选择重量最轻的货箱装船,直到所有集装原创 2020-05-08 19:36:36 · 4388 阅读 · 6 评论 -
【回溯法】-排列树-旅行商(TSP)问题C++实现
旅行商问题描述有n个城市,任意两个城市之间的距离已知。一个旅行商从某个城市出发经过每个城市且任一城市只经过一次,最后回到出发城市,如何确定代价最小的线路商人从西安出发,经过图中所示的所有城市回到西安,可以选择先到成都,然后到达广州,继续访问HK,访问完香港后不能回到广州,因为每个城市智能访问一次,离开香港后可以去上海,然后继续北上来到徐州,最后经过北京回到西安。上述路线是该问题的一个可行解,当...原创 2020-05-07 10:23:56 · 8167 阅读 · 7 评论