kmp算法到底是神马东西。。。 求解。。
c语言吧
全部回复
仅看楼主
level 5
明月砚 楼主
非计算机专业 = = 深度自学c中 。。。
度娘百科解释的看不懂啊看不懂 [惊讶]
神马看课本 83页 。。 他妹 前言不搭后语嘛
有米有形象一点的解释?

2012年06月13日 11点06分 1
level 7
数据结构上讲的还算比较详细。
2012年06月13日 11点06分 2
数据结构要到大二下了 = = 、、、
2012年06月13日 11点06分
@明月砚 自学啊。你要是用心今天晚上你就能掌握KMP算法。
2012年06月13日 11点06分
@泳贵医回2I = = 看不懂
2012年06月13日 14点06分
level 11
字符串匹配..
2012年06月13日 11点06分 3
举个例子呗~
2012年06月13日 11点06分
level 1
大家帮我个忙吧,有会的帮我一下,我已经弄了两天了,这个程序还是运行之后会停止,麻烦看出来哪里错的告诉我一下。不胜感激!
2012年06月13日 11点06分 4
level 1
int i,j,k; for(i = 1; i <= n; i++) //初始化 for(j = 1; j <= n; j++) { A[i][j] = adj.edges[i][j]; //i j之间长度 if(i==j) { A[i][j] = 0; } path[i][j] = -1; //初始化 } for(k = 1; k <= n; k++) for(i = 1; i <= n; i++) for(j = 1; j <= n; j++) { if(A[i][j] > (A[i][k] + A[k][j])) { A[i][j] = A[i][k]+A[k][j]; //修改最短路径长度值 path[i][j] = k; //将最短路径的节点号保存 } } Dispath(A,path,n,g); //用户输入,查找任意两个景点间的最短路径。} void Deep_Find_View(vexnode g[],int v,int n,int visted[]) //深度优先递归调用遍历,v起始顶点。{ edgenode *p; int flag = 0; if(flag == 0 && visted[v] == 0) { printf("%s",g[v].data); flag = 1; visted[v] = 1; } p = g[v].link; while(p != NULL) { if(visted[p->adjvex] == 0) //未被访问,则访问。 { printf("%s",p->info); visted[p->adjvex] = 1; Deep_Find_View(g,p->adjvex,n,visted); //递归调用 } p = p->next; }} void DFS(int n,vexnode g[]) //深度递归遍历,找出参观全部景点的最佳路线。{ int i,v; int visted[MAX]; //访问标志数组 for(i = 1; i <= n; i++) { visted[i] = 0; //为visited[]数组赋初值,0表示没访问。 } printf("请输入起始景点:\n"); scanf("%d",&v); printf("The route is:\n"); Deep_Find_View(g,v,n,visted);} int main(){ int n = 0; //景点数目 vexnode g[MAX]; //保存顶点及其信息 EdgeType e[MAXedg]; //保存边及其信息 adjmax adj; //保存边和定点 char choice = 'x'; while(1) { clrscr(); printf("\n\n\t\t\t***校园导游系统***"); printf("\n\t\t*************************************\n\n"); printf("\t\t\t1. 文件读入并创建校园图:\n\n"); printf("\t\t\t2. 查询景点详细信息:\n\n"); printf("\t\t\t3. 查询道路详细信息:\n\n"); printf("\t\t\t4. 查找两景点间最短路径:\n\n"); printf("\t\t\t5. 查找最佳参观路线:\n\n"); printf("\t\t\t0. 退出\n\n"); printf("\t\t\tWrite By Edvis@2012/6/11"); printf("\n\t\t************************************\n\n"); printf("Please enter your choice(0-5):\n "); choice = getchar(); switch(choice) { case '1': clrscr(); creatgraph(g,n,e,&adj); //创建图(景点,景点数,边,边和景点) printf("\n*******按任意键返回********\n"); getchar(); break; case '2': clrscr(); travgraph(g,n,adj); //查找指定景点信息(景点,景点数,边和景点) printf("\n*******按任意键返回********\n"); getchar(); break; case '3': clrscr(); Find_way(g,e); //查询道路信息(景点,边) printf("\n*******按任意键返回********\n"); getchar(); break; case '4': clrscr(); Floyd(adj,n,g); //查找两个景点间最短路径(边和景点,景点数,景点) getchar(); printf("\n*******按任意键返回********\n"); getchar(); break; case '5': clrscr(); DFS(n,g); //找出参观全部景点的最佳路线 getchar(); printf("\n"); printf("\n*******按任意键返回********\n"); getchar(); break; case '0': clrscr(); printf("\n*******按任意键退出********\n"); getchar(); exit(0); break; default: printf("\n输入错误,请重新输入:\n"); getchar(); break; } } return 0; getch();}
2012年06月13日 11点06分 6
level 1
因为程序太多。所以只能弄成这样了!
2012年06月13日 11点06分 7
在return 0;上加一行 system("PAUSE");然后去掉getchar
2012年06月13日 13点06分
level 10
百度 Matrix67 看**算法。。。 (其实CLRS讲的也相当详细,也有朋友是看严奶奶的视频学会的。。)
2012年06月13日 14点06分 8
好吧,被和谐了。
2012年06月13日 14点06分
2012年06月14日 02点06分
@明月砚 呃 你就百度Matrix67 KMP算法 就能搜到了
2012年06月14日 03点06分
@不结尾 好的~[飞吻]谢谢
2012年06月15日 00点06分
level 8
你要是不嫌弃的话我可以把自己整理的心得发给你,顺便你跟我指错,哈哈!
2012年06月13日 14点06分 9
好啊好啊。。 [email protected]谢谢了[飞吻]
2012年06月14日 02点06分
level 7
其实模式匹配的算法 还是比较多的。
2012年06月13日 14点06分 10
level 10
联系看matrix67的教程,虽然用pascal但是讲的很明白
2012年06月14日 03点06分 11
嗯 感谢
2012年06月15日 00点06分
1