
C
Aesthetic92
这个作者很懒,什么都没留下…
展开
-
关于memset
void *memset(void *buffer, int ch, size_t count);原创 2014-06-09 16:44:37 · 616 阅读 · 0 评论 -
广度优先遍历 BFS C实现
广度优先遍历的主要思想:首先以一个未被访问的顶点作为起始顶点,访问其所有相邻的顶点,然后对每个相邻的顶点,再访问它们相邻的未被访问过的顶点,直到所有的顶点都被访问过,遍历结束.Code:#include #include #include #define INF 999999int book[100];int main(int argc, char const *a原创 2014-12-01 14:21:16 · 980 阅读 · 0 评论 -
最少转机——图的广度优先遍历
摘自《啊哈算法》:小哼和小哈一同坐飞机去旅游,他们现在位于1号城市,目标是5号城市,可是1号城市并没有直接到5号城市的直航. 不过小哼已经收集到了很多航班的信息,现在小哼希望找到一中乘坐方式,使得转机的次数最少?Solution:深度优先遍历是不可以啊,DFS的思想会使得遍历的不一定是最少的可以运用BFS思想Code:#include #include #inc原创 2014-12-01 22:14:59 · 1794 阅读 · 0 评论 -
深度优先遍历求最短路径
给出一个地图,求顶点 1 到顶点 5 的最短路径原创 2014-12-01 16:57:36 · 9108 阅读 · 0 评论 -
深度优先遍历 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 · 937 阅读 · 0 评论 -
只有五行的算法——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 · 1127 阅读 · 0 评论 -
Dijkstra算法——通过边实现松弛
算法思想:每次找到离源点最近的顶点,然后以该顶点为中心进行扩展,最终得到源点到其余所有点的最短路径.时间复杂度是O(N^2).基本步骤:将所有的顶点分为两部分,已知最短路程的顶点集合S和未知最短路径的顶点集合V. 最开始,已知最短路径在集合S中只有源点一个顶点,用book数组来标记哪些点在集合S中.设置源点p到自己的最短路径为0(即dis[p] = 0). 若存在有源点能直接到达的原创 2014-12-04 20:31:31 · 1227 阅读 · 0 评论 -
SPFA——基于Bellman-Ford的队列优化
Bellman-Ford算法在每一次实施松弛操作时,就会有一些顶点已经求得最短路径,此后这些顶点的最短路径的估计值就会一直保持不变,不再受后续松弛操作的影响,但是每次还要判断是否需要松弛,这里浪费了大量的时间.SPFA(Shortest Path Faster Algorithm)是基于Bellman-Ford算法的改进,每次进队最短路径估计值发生变化了的顶点的所有出边执行松弛操作,借助一个队原创 2014-12-05 16:15:08 · 1889 阅读 · 0 评论 -
最短路径算法对比分析
N代表顶点个数,M代表边的条数.Floyd算法虽然总体时间复杂度,但是可以解决负权边(不能解决负权环,实际上这几种都无法解决负权回路,因为一直循环下去总能找到更小的路径),并且均摊到每一点对上,在所有的算法中还是比较好的. Floyd算法代码复杂度小也是一大优势. Dijkstra算法最大的弊端就是无法适应有负权边的图,但Dijkstra具有很好的可扩展性,另外在Dijkstra算法在选择剩余原创 2014-12-06 12:41:36 · 995 阅读 · 1 评论 -
去重与排序
input: 1020 40 32 67 40 20 89 3原创 2014-11-22 12:56:57 · 731 阅读 · 0 评论 -
KMP算法 C实现
KMP Code:/******************************************************************* Theme: KMP算法* Content:* Language: C* Author: Aesthetic92* Description:************************原创 2014-11-21 19:39:17 · 763 阅读 · 0 评论 -
关于.exe文件一闪而过处理
在写程序的时候,原创 2014-11-07 11:08:27 · 3485 阅读 · 0 评论 -
%d,%f输入输出的问题
printf("%lf", 8/5);原创 2014-11-13 00:41:59 · 1494 阅读 · 0 评论 -
i++ 与 ++i 的执行过程
经常遇到 i++ 或者 ++i 什么的原创 2014-11-19 16:27:14 · 2077 阅读 · 1 评论 -
堆排序
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 · 451 阅读 · 0 评论 -
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 · 589 阅读 · 0 评论 -
回文 栈实现
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 · 798 阅读 · 0 评论 -
C语言中 *号的用途
在C语言中 * 号有三个用途乘号,用做乘法的运算,liru原创 2014-11-22 18:28:10 · 12978 阅读 · 0 评论 -
纸牌游戏——小猫钓鱼 栈与队列合用实现
游戏规则:将一副扑克牌平均分为两份,每人拿一份原创 2014-11-22 17:34:16 · 2668 阅读 · 0 评论 -
Bellman-Ford——解决负权边
Dijkstra算法虽好,但是不能解决带负权边的图,而Bellman-Ford就是解决这个问题的在一个含有n个顶点的图中,任意两点之间的最短路径最多包含n-1条边,最短路径中不可能包含回路.最短路径是一个不包含回路的简单路径,回路分为正权回路(回路权值之和为正)和负权回路(回路权值之和为负). 如果最短路径中包含正权回路,那么去掉这个回路,一定可以得到更短的路径;如果最短路径中包含原创 2014-12-04 22:59:03 · 1279 阅读 · 0 评论