自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 最短路径算法对比分析

N代表顶点个数,M代表边的条数.Floyd算法虽然总体时间复杂度,但是可以解决负权边(不能解决负权环,实际上这几种都无法解决负权回路,因为一直循环下去总能找到更小的路径),并且均摊到每一点对上,在所有的算法中还是比较好的. Floyd算法代码复杂度小也是一大优势. Dijkstra算法最大的弊端就是无法适应有负权边的图,但Dijkstra具有很好的可扩展性,另外在Dijkstra算法在选择剩余

2014-12-06 12:41:36 958 1

原创 SPFA——基于Bellman-Ford的队列优化

Bellman-Ford算法在每一次实施松弛操作时,就会有一些顶点已经求得最短路径,此后这些顶点的最短路径的估计值就会一直保持不变,不再受后续松弛操作的影响,但是每次还要判断是否需要松弛,这里浪费了大量的时间.SPFA(Shortest Path Faster Algorithm)是基于Bellman-Ford算法的改进,每次进队最短路径估计值发生变化了的顶点的所有出边执行松弛操作,借助一个队

2014-12-05 16:15:08 1848

原创 Bellman-Ford——解决负权边

Dijkstra算法虽好,但是不能解决带负权边的图,而Bellman-Ford就是解决这个问题的在一个含有n个顶点的图中,任意两点之间的最短路径最多包含n-1条边,最短路径中不可能包含回路.最短路径是一个不包含回路的简单路径,回路分为正权回路(回路权值之和为正)和负权回路(回路权值之和为负). 如果最短路径中包含正权回路,那么去掉这个回路,一定可以得到更短的路径;如果最短路径中包含

2014-12-04 22:59:03 1237

原创 Dijkstra算法——通过边实现松弛

算法思想:每次找到离源点最近的顶点,然后以该顶点为中心进行扩展,最终得到源点到其余所有点的最短路径.时间复杂度是O(N^2).基本步骤:将所有的顶点分为两部分,已知最短路程的顶点集合S和未知最短路径的顶点集合V. 最开始,已知最短路径在集合S中只有源点一个顶点,用book数组来标记哪些点在集合S中.设置源点p到自己的最短路径为0(即dis[p] = 0). 若存在有源点能直接到达的

2014-12-04 20:31:31 1176

原创 只有五行的算法——Floyd-Warshall

基本思想:最开始只允许经过1号顶点进行中转,接下来只允许经过1和2号顶点进行中转......允许经过1~n号所有顶点进行中转,求任意两点之间的最短路径. 用一句话概括就是:从 i 号顶点到 j 号顶点只经过前 k 号点的最短路径. 时间复杂度O(N^3).Code:#include #include #include #define INF 999999int main(int

2014-12-04 00:11:26 1091

原创 最少转机——图的广度优先遍历

摘自《啊哈算法》:小哼和小哈一同坐飞机去旅游,他们现在位于1号城市,目标是5号城市,可是1号城市并没有直接到5号城市的直航. 不过小哼已经收集到了很多航班的信息,现在小哼希望找到一中乘坐方式,使得转机的次数最少?Solution:深度优先遍历是不可以啊,DFS的思想会使得遍历的不一定是最少的可以运用BFS思想Code:#include #include #inc

2014-12-01 22:14:59 1755

原创 深度优先遍历求最短路径

给出一个地图,求顶点 1 到顶点 5 的最短路径

2014-12-01 16:57:36 9033

原创 广度优先遍历 BFS C实现

广度优先遍历的主要思想:首先以一个未被访问的顶点作为起始顶点,访问其所有相邻的顶点,然后对每个相邻的顶点,再访问它们相邻的未被访问过的顶点,直到所有的顶点都被访问过,遍历结束.Code:#include #include #include #define INF 999999int book[100];int main(int argc, char const *a

2014-12-01 14:21:16 940

原创 深度优先遍历 DFS C实现

深度优先遍历DFS, 同样适用于求出连通分量个数Code:#include #include #include #define INF 999999int book[101], e[101][101]; /// book 数组代表顶点是否被访问int sum, n;void dfs(int cur){ int i; printf("%d ", cur)

2014-12-01 13:49:39 892

原创 C语言中 *号的用途

在C语言中 * 号有三个用途乘号,用做乘法的运算,liru

2014-11-22 18:28:10 12647

原创 纸牌游戏——小猫钓鱼 栈与队列合用实现

游戏规则:将一副扑克牌平均分为两份,每人拿一份

2014-11-22 17:34:16 2592

原创 回文 栈实现

Code:#include #include #include int main(){ char str[100], s[100]; int i, len, mid, top; gets(str); len = strlen(str); mid = len/2 - 1; top = -1; for (i = 0; i <= mid; ++i) { s[+

2014-11-22 14:21:08 763

原创 去重与排序

input: 1020 40 32 67 40 20 89 3

2014-11-22 12:56:57 703

原创 KMP算法 C实现

KMP Code:/******************************************************************* Theme: KMP算法* Content:* Language: C* Author: Aesthetic92* Description:************************

2014-11-21 19:39:17 739

原创 堆排序

Code:#include #include void Adjust_heap(int array[], int pos, int n){ int i, temp; for(i = 2 * pos; i <= n; i *= 2) { if(i < n && array[i] < array[i+1]) {

2014-11-19 23:40:23 428

原创 Hash Table 开放寻址处理冲突

Code:#include using namespace std;const int p = 7;const int N = 8;int T[N];/// 初始化void hash_init(){ for (int i = 0; i < N; ++i) { T[i] = -1; }}/// 开放寻址int hash_fun(i

2014-11-19 23:35:44 556

原创 i++ 与 ++i 的执行过程

经常遇到 i++ 或者 ++i 什么的

2014-11-19 16:27:14 2002 1

原创 静静的下午

这样一个明媚的下午,喝着

2014-11-15 13:09:36 475

原创 K-Means聚类算法的实现(C语言)

最近做了聚类实验——K-means算法

2014-11-14 23:07:44 21825 5

原创 %d,%f输入输出的问题

printf("%lf", 8/5);

2014-11-13 00:41:59 1403

原创 最快最简单的排序——桶排序

这是一个非常快的排序算法

2014-11-12 20:49:55 494

原创 关于.exe文件一闪而过处理

在写程序的时候,

2014-11-07 11:08:27 3365

原创 python判断模块是直接执行还是加载模块

每一个python写的脚本文件都k

2014-11-02 14:15:18 1108

原创 可以学习的计算机书籍

基础篇1、c程序设计语言2、c和指针3、c缺陷与陷阱4、c专家编程5、组成原理(大学课本)6、操作系统(大学课本)7、编译原理(龙书)8、CCNA学习指南9、深入理解计算机系统10、数据结构11、算法导论中级篇c++部分12、c++primer13、c++标准库14、超越c++标准库15、深度探索C++对象

2014-09-08 09:53:36 607

原创 回忆

多年以后,再回忆高考,其实bens

2014-06-09 18:36:07 502

原创 关于memset

void *memset(void *buffer, int ch, size_t count);

2014-06-09 16:44:37 587

原创 getline函数

用于读取一行字符知道

2014-06-08 22:39:44 857

原创 map中元素的插入

1. insert函数插入pa

2014-06-06 21:34:42 658

原创 迭代器失效

对于序列式容器,比如vector,删除当前的iterator会使后面所有元素的iterator都失效。这是因为顺序容器内存是连续分配,删除 一个元素导致后面所有的元素会向前移动一个位置。但是erase方法可以返回下一个有效的iterator。

2014-06-06 21:25:11 491

原创 未来1~2年计划

第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来。1.最短路(Floyd、Dijstra,BellmanFord) 2.最小生成树(先写个prim,kruscal要用并查集,不好写) 3.大数(高精度)加减乘除 4.二分查找. (代码可在五行以内) 

2014-06-06 19:50:08 866

原创 算法导论版QuickSort

code:

2014-06-05 17:54:00 751

空空如也

空空如也

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

TA关注的人

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