单源最短路径---Dijkstra算法

基本模型 基本思想:每次找离源点最近的一个顶点,然后以改顶点为中心进行扩展,最终得到源点到其余所有点的最短路径。 具体步骤: 1. 将所有的顶点分为两个部分:已知最短路程的顶点集合P和未知最短路径的顶点集合Q。 2. 设置源点s到自己的最短路径为0,即dis[s]=0。若存在有源点能直接到...

2016-12-19 19:10:03

阅读数:324

评论数:0

Floyd算法求最短路径并记录路径

基本模型从最开始只允许经过1号顶点中转,接下来允许经过1号和2号中转……..允许经过1~n号所有的顶点进行中转,求任意两点间的最短路程。用一句话概括就是:从i号顶点到j号顶点之经过前k号的最短路程。实例 求任意两点之间的最短路径#include <stdio.h> #define I...

2016-12-19 13:11:51

阅读数:4318

评论数:0

图的遍历(DFS&BFS)

基本模型 图的存储使用邻接矩阵的方法 深度优先遍历:沿着图的某一条分支遍历直到末端,然后回溯,再沿着另一条进行同样的遍历,知道所有的顶点都被访问过为止。 广度优先遍历:首先以一个未被访问过的顶点作为起始顶点,访问其所有相邻的顶点,然后对每个相邻的顶点,再访问它们相邻的未被访问的顶点,直到所有的顶点...

2016-12-19 12:20:31

阅读数:332

评论数:0

广度优先搜索

基本模型广度优先搜索(BFS)也称宽度优先搜索,具体,从起点出发,遍历所有1步能到达的点,再遍历所有2步可以到达的点,如此一直找到终点。如果到达终点一定是最短的步数。应用走出迷宫深度优先搜索的方案 这里一步步向前推进就好了!#include <stdio.h> struct note...

2016-12-19 01:28:53

阅读数:253

评论数:0

深度优先搜索

基本模型 深度优先搜索(Depth First Search,DFS)的关键在于解决“当下该做什么”,至于“下一步如何做”则与“当下该如何做”是一样的。 void dfs(int step) { 判断边界 尝试每一种可能for(i=1;i<=n;i++){ 继...

2016-12-18 23:01:53

阅读数:362

评论数:0

n个数的全排列

基本实现 递归实现 #include <stdio.h> void Swap(char *a, char *b) {// 交换a和b char temp = *a; *a = *b; *b = temp; }void Perm(char list[], int ...

2016-12-18 21:17:44

阅读数:1716

评论数:0

快速排序

以第一个数为基准数,两个哨兵从右和左依次前进! 注意,如果基准数是最左边的,右边的哨兵先出发! 平均时间复杂度O(Nlog N) 源代码:#include<stdio.h> int a[101],n;void display(){ int i; for(i=1;i<...

2016-12-18 20:36:10

阅读数:207

评论数:0

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