字串匹配問題 kmp演算法C語言實現
int n,k;
int next[MAX]=...{0} ;
int lA=0,la =0 ;
char A[MAX],a[MAX] ;
scanf("%s %s",A,a) ;
lA = strlen(A);
la = strlen(a);
for(k=la-1; k>=0 ;k --)
a[k+1] = a[k] ;
for(k=lA-1; k>=0 ;k --)
A[k+1] = A[k] ;
get_next(next,a,la) ;
k = str_kmp(next,A,a,lA,la);
printf("Not Soulation!!! ");
else
printf("%d ",k) ;
system("pause");
return0 ;
}
相關推薦
字串匹配問題 kmp演算法C語言實現
{ int n,k; int next[MAX]=...{0} ; int lA=0,la =0 ; char A[MAX],a[MAX] ; scanf("%s %s",A,a) ; lA = strlen(A); la = strlen(a); fo
字串匹配——KMP演算法的Java實現
開始複習演算法,複習到字串這一結構時,一個經典的問題就是兩個字串的匹配問題。 比如:在主串ssdfgasdbababa中找是否存在一個asdba的子串。 傳統方法——暴力匹配 用傳統的方法就是暴力匹配,從主串中一個個地和子串匹配。 最壞的情況下,就是
串模式匹配算法KMP的C語言實現
退回 lib false else 不同 存在 == 根據 status #include "string.h"#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #
字串匹配——KMP(C++實現)
字串匹配是計算機的基本任務之一。 舉例來說,有一個字串"BBC ABCDAB ABCDABCDABDE",我想知道,裡面是否包含另一個字串"ABCDABD"? 許多演算法可以完成這個任務,Knuth-Morris-Pratt演算法(簡稱KMP)是最常用的之一。它以三個發明者命名,起頭的
MD5演算法 —— C語言實現(字串的加密)
網上找到的實現md5函式程式碼,包括一個頭檔案md5.h和一個原始檔md5.c,用下面的測試程式碼test.c測試通過,各檔案依次如下: .h檔案——md5.h #ifndef MD5_H #define MD5_H typedef struct { unsi
KMP演算法(C語言)
#include <stdio.h> #include <string.h> int KMP(char *t, char *p, int *next) { int a,i,j; a=0; i=0; j=0; while(i<strlen(t)
SHA-1演算法C語言實現
> 程式碼轉載自:https://blog.csdn.net/testcs_dn/article/details/25771377?locationNum=13&fps=1 > 感謝博主分享 #include<stdio.h> void creat_w(uns
頁面置換演算法——最近最久未使用演算法(c語言實現)
作業系統實驗:用C語言程式設計實現最近最久未使用置換演算法(LRU) 最近最久未使用置換演算法(LRU),全稱Least Recently Used,是一種頁面置換演算法。 對於在記憶體中但又不用的資料塊(記憶體塊)叫做LRU,作業系統會根據哪些資料屬於LRU而將其移出記憶體而騰出空間來載入另外
建立雙向連結串列的演算法——C語言實現
建立雙向連結串列的演算法——C語言實現 雙向連結串列也叫雙鏈表,是連結串列的一種,它的每個節點包含兩個指標,分別指向直接後繼和直接前驅(頭節點的前驅指空,尾節點的後繼指空)。所以,從雙向連結串列中的任意一個非前驅非後繼節點開始,都能很方便地訪問它的前驅和後繼節點。 實際上如果熟練掌握了單向連
差分進化演算法 C語言實現
之前的一篇中貼出了自己研究生期間C實現的基本粒子群演算法,執行速度顯然要比其他的高階語言快,這也是各個程式語言之間的差別,現在對於曾經輝煌過的差分進化演算法進行C語言實現。變異策略採用DE/rand/1,這個是最常見的。有錯誤之處請之處。 /***************D
氣泡排序演算法C語言實現
第一部分 排序方法介紹 常用的排序方法:氣泡排序,選擇排序,插入排序及希爾排序等。 氣泡排序是常用的一種排序方法,其基本方法就是逐次比較。即一次比較兩個數,若它們的順序錯誤,則交換;重複進行,知道沒有需要交換為止。 以升序排序為例: 1.
MD5加密演算法C語言實現
md5.h #ifndef MD5_H #define MD5_H typedef struct { unsigned int count[2]; unsigned int state[4]; unsigned char buffe
10個重要的演算法C語言實現原始碼:拉格朗日,牛頓插值,高斯,龍貝格,牛頓迭代,牛頓-科特斯,雅克比,秦九昭,冪法,高斯塞德爾
(一)拉格朗日插值多項式 #include <stdio.h> #include <conio.h> #include <alloc.h> &n
磁碟排程演算法C語言實現
最短尋道時間優先(SSTF)演算法。要求訪問的磁軌,與當前磁頭所在的磁軌距離最近,以使每次的尋道時間最短。掃描排程(SCAN)演算法。該演算法不僅考慮到欲訪問的磁軌與當前磁軌間的距離,更優先考慮的是磁頭當前的移動方向。例如,當磁頭正在自裡向外移動時,SCAN演算法所考慮的下一
非常值得一看—九種濾波演算法C語言實現
關注“嵌入式軟體開發學習圈”免費獲取更多學習教程 今天帶著大家學習濾波演算法c語言(九種濾波演算法)實現,以及程式碼,大家可以學習瞭解下。。。。 1.限幅濾波演算法(程式判斷濾波演算法) 方法解析: 根據經驗判斷,確定兩次取樣允許的最
作業排程之先來先服務演算法C語言實現
程式碼如下 /* @author WellsLiu @url liuyanzhao.com*/#include"stdio.h"#include"stdlib.h"typedef st
處理機排程演算法C語言實現(註釋得當!!)
/* created by herbert on 10 Nov */ #include <iostream> #include <queue> #include <algorithm> #include <c
最短路徑之Dijkstra演算法 C語言實現
Dijkstra演算法(單源點路徑演算法,要求:圖中不存在負權值邊): 步驟: a. 初始時,S只包含源點,即S={v},v的距離為0。U包含除v外的其他頂點,即: U={其餘頂點},若v與U中頂點u有邊,則u的距離設定為相應的權值,若u v之間不存在邊,則
SHA-256演算法 C語言實現
#include <stdio.h> #include <stdlib.h> #define SHA256_ROTL(a,b) (((a>>(32-b))&(0x7fffffff>>(31-b)))|(a<<
哈夫曼壓縮演算法C語言實現——步驟,詳細註釋原始碼
哈夫曼壓縮演算法的詳細實現步驟: 1、定義哈夫曼樹節點,用結構體。 2、利用C語言檔案讀寫,統計字元個數。 3、根據字元個數建立哈夫曼樹(不懂haffman資料結構的自己查下資料,我這裡就不再重複了) 4、根據哈夫曼樹為每個出現的字元編碼 5、壓縮:這裡涉及到位操作,用ch