- 博客(6)
- 收藏
- 关注
原创 笔记:KMP算法(解决字符串匹配问题)
//解决字符串匹配问题,除了暴力匹配,还可以使用KMP匹配算法。Void main(){ int next[10]; int pos; S[0]=strlen("abcabaaabaabcac");//将字符串的字符数保存在S[0]里 strcpy(S+1,"abcabaaabaabcac"); T[0]=strlen("abaabcac"); ...
2018-11-29 15:15:25 243
原创 笔记:拓扑排序算法(有向无环图拓扑排序输出或者检验有向图是否存在回路)
//该算法比较简单,对有向无环图进行拓扑排序输出。也可以检验有向图是否存在回路。这里处理的对象是邻接表。bool ToplogicalSort(Graph G){ InitStack(S); for(int i=0;i<G.vexnum;i++)//初始化栈,存储入度为0的顶点 if(indegree[i]==0)Push(S,i); int co...
2018-11-22 15:05:11 1070
原创 笔记:弗洛伊德算法(解决图中任意两顶点的最短路径和最小权值问题)
//一个有权图的邻接矩阵经过弗洛伊德算法处理后,得到的结果,能够解决求任意两顶点的最小路径问题和最小//权值问题。具体处理得到的结果是一个记录最小权值的二维数组A[i][j](表示顶点i到顶点j的最小权值)//和记录前驱顶点的二维数组Path[i][j](表示i到j的最短路径中j的前驱结点,如是k,则再查//Path[i][k],如此可逆序输出i到j的最短路径);具体处理步骤看代码voi...
2018-11-21 19:56:59 543
原创 笔记:迪杰斯特拉算法(求给定顶点到各个顶点的最短路径和最小权值)
//该算法简单说就是在图里求给定顶点到各个顶点的最短路径和最小权值。//过程方法是,遍历并记录起始点到各个顶点的距离,取最小权值邻接点,记录前驱结点。最终生成的结果//可通过前驱结点找到起点到该顶点的最短路径。Void Dijkstra(MGraph G,int v,int path[],int dist[]){//参数分别为:图,源点(起点),供保存//该点到源点最小路径的前驱结点的路...
2018-11-21 13:22:08 963
原创 笔记:克鲁斯卡尔算法(解决最小生成树问题)
//用到了并查集和堆排序解决最小生成树,思路就是权值边排序(堆排序),然后从最小权值边取起,边取边判定是否有回路(用并查集),有回路则放弃该边。思路相对简单,直接看代码。#define MaxSize 100typedef struct{ int a,b;//边的两个顶点 int weight;//边的权值}Edge;//边结构体int Find(int *parent,...
2018-11-15 22:39:31 701
原创 笔记:普利姆(Prim)算法(生成最小树)
//贪心算法下的最小生成树,普利姆算法。以连通图的任一顶点作为起点,每次筛选权值最小的边连接剩余顶点,最终生成最小生成树Void miniSpanTree_Prim(MGraph G){//算法入口,将某一点置入作为起点 int min,i,j,k; int adjvex[MAXVEX];//保存当前生成树中与该顶点i权值最小的邻接点的编号,若对应的lowcost[i]为0,则...
2018-11-15 19:25:36 961
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人