算法
xiaoyangxavier
士不可以不弘毅,任重而道远!
展开
-
问题描述最大子段和问题:蛮力、递归及动态规划
问题描述求一个序列的最大子段和即最大连续子序列之和。例如序列[4, -3, 5, -2, -1, 2, 6, -2]的最大子段和为11=[4+(-3)+5+(-2)+(-1)+(2)+(6)]。1. 蛮力算法思想:从序列首元素开始穷举所有可能的子序列。 代码示例(C++):#include<iostream>using namespace std;int MaxSubsequenceSum(const int array[], int n){ int tempSum转载 2020-08-11 19:54:59 · 498 阅读 · 0 评论 -
最短路径—Dijkstra算法和Floyd算法
注意:以下代码 只是描述思路,没有测试过!! Dijkstra算法1.定义概览Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。注意该算转载 2016-12-14 10:08:39 · 309 阅读 · 0 评论 -
最小生成树-Prim算法和Kruskal算法
Prim算法1.概览普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小。该算法于1930年由捷克数学家沃伊捷赫·亚尔尼克(英语:Vojtěch Jarník)发现;并在1957年由美国计算机科学家罗转载 2016-12-14 10:10:41 · 462 阅读 · 0 评论 -
prim算法基础详解(无向赋权图的最小生成树MST)
带权图分为有向和无向,无向图的最短路径又叫做最小生成树,有prime算法和kruskal算法生成树的概念:联通图G的一个子图如果是一棵包含G的所有顶点的树,则该子图称为G的生成树 生成树是联通图的极小连通子图。所谓极小是指:若在树中任意增加一条边,则将出现一个回路;若去掉一条边,将会使之变成非连通图。生成树各边的权值总和称为生成树的权。权最小的生成树称为最小生成树,常用的算转载 2017-10-22 21:18:46 · 3555 阅读 · 0 评论 -
数据结构_图论
图的概念图是一种非线性的数据结构,一个图中有两类东西,一种是结点,一种是边.我们用V这个集合来表示节点(vertex),还需要另一个集合来存储所有的边,我们用E来表示(Edge),那么一个图就可以表示为:G=(V,E);带箭头的称为有向图,否则称为无向图.如果一个图的任意两个结点之间有且只有一条边,则称此图为无向完全图,若任意两个结点之间有且只有方向相反的两条边,则称为有向完全图.度是针对...转载 2018-09-06 20:24:43 · 410 阅读 · 0 评论 -
设计模式-装饰者模式(Decorator Pattern)
此设计模式遵循的设计原则之一:类应该支持扩展,而拒绝修改(Open-Closed Principle)装饰者模式简述装饰者模式通过组合的方式扩展对象的特性,这种方式允许我们在任何时候对对象的功能进行扩展甚至是运行时扩展,而若我们用继承来完成对类的扩展则只能在编译阶段实现,所以在某些时候装饰者模式比继承(inheritance)要更加灵活。装饰者模式具有的一些特征1,装饰...转载 2019-04-12 18:43:45 · 373 阅读 · 0 评论 -
KMP算法
什么是KMP算法:KMP是三位大牛:D.E.Knuth、J.H.Morris和V.R.Pratt同时发现的。其中第一位就是《计算机程序设计艺术》的作者!!KMP算法要解决的问题就是在字符串(也叫主串)中的模式(pattern)定位问题。说简单点就是我们平时常说的关键字搜索。模式串就是关键字(接下来称它为P),如果它在一个主串(接下来称为T)中出现,就返回它的具体位置,否则返回-1(常用手段...转载 2019-04-21 20:21:44 · 168 阅读 · 0 评论