Nick

亘古而常青的昨天永远是过去,也永远会再来。

C++类有继承时,析构函数必须为虚函数

C++类有继承时,析构函数必须为虚函数。如果不是虚函数,则使用时可能存在内在泄漏的问题。   如果自己设计的C++类体系中存在继承关系,请注意父子类的析构函数关键字设置。虚函数是在基类中被声明为 virtual,并在派生类中重新定义的成员函数,可实现成员函数的动态重载。 当一个类作为基类时,它...

2019-01-18 21:17:28

阅读数 22

评论数 0

面向对象编程(笔记)

1.复合 (类中含有其他类) has-a 2.委托(类中含有其他类的指针)has-pointer-to 3.继承   is-a  

2019-01-16 17:03:20

阅读数 18

评论数 1

string class (字符串类的设计,带指针的class)

包括内容: 深度拷贝:类中指针所指向的区域 需要拷贝 new:先分配memory,再调用构造函数 delete:先调用析构函数,再释放memory 动态分配内存 堆、栈的区别 内存分配方式的可视化(release and debug) big three:拷贝构造、拷贝赋值、析构函数...

2019-01-15 21:58:12

阅读数 14

评论数 0

complex class (复数类的设计,不带指针的class)

包括内容有: 合理使用:引用、const关键字 形参尽量使用引用 const 能加则比加 运算符重载(一般设定为inline函数) 友元函数:可直接使用类的private成员,提高程序运行效率 尽量使用  冒号(:)的赋值方式对 构造函数进行初始化 构造函数的函数重载 类内定义的函...

2019-01-15 11:57:09

阅读数 29

评论数 0

iostream Iterator 的使用

#include <iostream> #include <iterator> #include <algorithm> #include <...

2019-01-14 18:34:53

阅读数 26

评论数 0

线段树的理解(转载)

http://www.cnblogs.com/TenosDoIt/p/3453089.html 线段树的精髓在于: 对区间做操作,可以高效实现,基本能保持每个操作的复杂度为O(logn) 线段树中的延迟标记概念 ...

2019-01-04 18:09:51

阅读数 14

评论数 0

霍夫曼编码(C++ 优先队列)

霍夫曼编码 一般采用前缀编码 -- -- 对字符集进行编码时,要求字符集中任一字符的编码都不是其它字符的编码的前缀,这种编码称为前缀(编)码。 算法思想: 构造哈夫曼树非常简单,将所有的节点放到一个队列中,用一个节点替换两个频率最低的节点,新节点的频率就是这两个节点的频率之和。这样, 新节点...

2018-12-12 20:57:51

阅读数 30

评论数 0

字符串匹配——KMP(C++实现)

字符串匹配是计算机的基本任务之一。 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 许多算法可以完成这个任务,Knuth-Morris-...

2018-12-11 17:50:02

阅读数 13

评论数 0

Astar A*算法 最短路径算法

通常情况下,迷宫寻路算法可以使用深度优先或者广度优先算法,但是由于效率的原因,不会直接使用这些算法,在路径搜索算法中最常见的就是A*寻路算法。使用A*算法的魅力之处在于它不仅能找到地图中从A到B的一条路径,还能保证找到的是一条最短路径,它是一种常见的启发式搜索算法,类似于Dijkstra算法一样的...

2018-12-10 20:23:31

阅读数 66

评论数 0

最短路径---SPFA算法(C++)

适用范围:给定的图存在负权边,这时类似Dijkstra等算法便没有了用武之地,而Bellman-Ford算法的复杂度又过高,SPFA算法便派上用场了。 我们约定有向加权图G不存在负权回路,即最短路径一定存在。当然,我们可以在执行该算法前做一次拓扑排序,以判断是否存在负权回路,但这不是我们讨论的重点...

2018-12-07 23:03:33

阅读数 36

评论数 0

SGU326 perspective 最大流 竞赛排名问题

  题目大意:有n支NBA球队,这些队伍属于同一个半区,已知各队目前已经赢了几场以及还要打几场(赢了的场次和没打的场次不一定是和     相同半区内的对手),另外已知一个n * n的矩阵,a[i][j]代表i和j还要打的比赛场数。根据这些条件,请问队伍1有没有获得半区冠军的可能性     (若积分...

2018-12-06 16:33:36

阅读数 23

评论数 0

最大流之Ford-Fulkerson算法(C++实现)

本文主要讲解最大流问题的Ford-Fulkerson解法。可是说这是一种方法,而不是算法,因为它包含具有不同运行时间的几种实现。该方法依赖于三种重要思想:残留网络,增广路径和割。 一、残留网络 顾名思义,残留网络是指给定网络和一个流,其对应还可以容纳的流组成的网络。具体说来,就是假定一个网络G...

2018-12-06 15:21:30

阅读数 93

评论数 0

POJ - 3259 Wormholes(多种方法求负权回路)+译文

While exploring his many farms, Farmer John has discovered a number of amazing wormholes. A wormhole is very peculiar because it is a one-way path th...

2018-12-05 20:45:39

阅读数 44

评论数 1

最短路径---Floyd算法(C++)

Floyd算法的介绍 算法的特点:  弗洛伊德算法是解决任意两点间的最短路径的一种算法,可以正确处理有向图或有向图或负权(但不可存在负权回路)的最短路径问题,同时也被用于计算有向图的传递闭包。 算法的思路 通过Floyd计算图G=(V,E)中各个顶点的最短路径时,需要引入两个矩阵,矩阵S中的元...

2018-12-05 20:32:31

阅读数 76

评论数 0

Bellman-Ford算法原理及练习 || LeetCode 787

There are n cities connected by m flights. Each fight starts from city u and arrives at v with a price w. Now given all the cities and flights, toge...

2018-12-04 21:47:36

阅读数 47

评论数 0

贝尔曼-福特(Bellman-Ford)算法——解决负权边(C++实现)

Dijkstra算法虽然好,但是它不能解决带有负权边(边的权值为负数)的图。 接下来学习一种无论在思想上还是在代码实现上都可以称为完美的最短路径算法:Bellman-Ford算法。 Bellman-Ford算法非常简单,核心代码四行,可以完美的解决带有负权边的图。 for(k=1;k&am...

2018-12-04 20:43:20

阅读数 120

评论数 0

单源最短路径——迪杰斯特拉(Dijkstra)算法 C++实现

求最短路径之Dijkstra算法 Dijkstra算法是用来求单源最短路径问题,即给定图G和起点s,通过算法得到s到达其他每个顶点的最短距离。 基本思想:对图G(V,E)设置集合S,存放已被访问的顶点,然后每次从集合V-S中选择与起点s的最短距离最小的一个顶点(记为u),访问并加入集合S。之后...

2018-12-03 16:24:39

阅读数 56

评论数 0

最小生成树之普里姆(prim)算法(C++实现)

最小生成树之普里姆(Prim)算法   最小生成树:是在一个给定的无向图G(V,E)中求一棵树T,使得这棵树拥有图G中的所有顶点,且所有边都是来自图G中的边,并且满足整棵树的边权之和最小。 如上图给出了一个图G及其最小生成树T,其中红色的线即为最小生成树的边。最小生成树T包含了图G中所有...

2018-12-02 22:54:11

阅读数 34

评论数 0

最小生成树之kruskal(克鲁斯卡尔)算法(C++实现)

参考博客:https://blog.csdn.net/YF_Li123/article/details/75195549   最小生成树之kruskal(克鲁斯卡尔)算法 kruskal算法:同样解决最小生成树的问题,和prim算法不同,kruskal算法采用了边贪心的策略,思想要比prim...

2018-12-01 20:58:49

阅读数 25

评论数 0

判断点是否在三角形内

参考文章: https://www.cnblogs.com/graphics/archive/2010/08/05/1793393.html https://blog.codingnow.com/2018/11/float_precision_problem.html#comment-4773...

2018-11-29 21:47:05

阅读数 25

评论数 0

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