自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 算法之宽度搜索和深度搜索

宽度优先搜索定义:宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。之所以称之为宽度...

2020-04-07 21:56:31 1553

原创 算法之分治和构造

原理:分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。即一种分目标完成程序算法,简单问题可用二分法完成。分治法求解步骤(1)分解,将要解决的问题划分成若干规模较小的同类问题;(2)求解,当子问题划分得足够小时,用较简单的方法解决;(3)合并,按原问题的要求,将子问题的解逐层合并构成原问题的

2018-02-01 23:41:36 371

原创 算法之动态规划

动态规划算法思想原理:动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最后一个子问题就是初始问题的解。适用情况:能采用动态规划求解的问题的一般要具有3个性质:(1)

2018-02-01 23:20:28 194

原创 算法之枚举和贪心

枚举(亦称穷举)算法原理:枚举法的本质就是从所有候选答案中去搜索正确的解,使用该算法需要满足两个条件:(1)可预先确定候选答案的数量;(2)候选答案的范围在求解之前必须有一个确定的集合。核心思想:枚举所有的可能。枚举算法简单粗暴,他暴力的枚举所有可能,尽可能地尝试所有的方法。虽然枚举算法非常暴力,而且速度可能很慢,但确实我们最应该优先考虑的!因为枚举法变成实现最简单,并且得到的结果总是

2018-02-01 22:52:40 2075

原创 数据结构之二叉树的遍历方法

二叉树的遍历方式前序遍历:先(根)序遍历的递归算法定义:若二叉树非空,则依次执行如下操作:⑴ 访问根结点;⑵ 遍历左子树;⑶ 遍历右子树。递归代码实现procedure first(i:longint); begin write(a[i]); ifa[i*2]<>0then first(i*2); ifa[i*2+1]<>0then firs

2018-02-01 01:23:34 181

原创 数据结构之二叉搜索树

二叉搜索树:二叉查找树又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。为了便于理解,这里上两张图代码实现:struct BiTree { int data; BiTree

2018-02-01 01:12:08 177

原创 数据结构之排序算法总结

排序种类及相应思想①冒泡排序:冒泡排序算法的运作如下:(从后往前)比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。②选择排序:它的工作原理是每一次从待排序的数据元素中选出

2018-02-01 00:56:45 175

原创 数据结构之插入排序

插入排序:插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。因而空间复杂度为{O(1)}具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序 取出下一个元素

2018-01-24 22:51:01 193

原创 数据结构之链表基础知识点

链表:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。相比于线性表顺序结构,链表比较方便插入和删除操作。定义typedef int ElemType;typedef str

2018-01-24 20:46:51 956

原创 栈与队列的基础知识点

栈(stack)又名堆栈,它是一种特殊的线性表。元素之间成线性结构。在c++中其头文件为特性:运算受限制,只允许在栈顶进行插入删除操作,插入叫做进栈,入栈或者压栈(push),删除叫做出栈(pop),由于有这种特性,所以著名特点是后进先出。定义:stacks现在展示一道题进行讲解吧,话不多说请看题,杭电acm题根据题目要求,我们很清楚的知道,这就是一个关于栈的应用,当一

2018-01-23 19:31:25 2066

原创 判断素数及相关知识点

素数定义:如果一个正整数只能被1和它本身整除,则这个数称为素数(特别地:1除外),2为最小的素数。判断原理:根据定义,我们将被判断的数除以(2到对这个数开根号)的所有数,如果有一个能除尽,那么为非素数,如果均除不尽,那么可以判断这个数为素数。这里解释为什么只用除到根号m吧,根据数学知识,如果一个数有一个因子在根号m到m之间,那么这个数一定会有一个因子在1到根号m之间。仅讲知识点感觉

2018-01-21 17:02:53 630

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除