使用bm算法進行字符串匹配的例子.
// BM.cpp : Defines the entry point for the console application. // #include <stdio.h> #include <string> #define XSIZE 256 #define ASIZE 256 #define MAX(x,y) (x) > (y)? (x):(y) #define OUTPUT(x) printf("匹配位置:%d/n",x) #define PatternStr "付" #define MainStr "AAAAa付付b付" void preBmBc(char *x, int m, int bmBc[]) { int i; for (i = 0; i < ASIZE; ++i) bmBc[i] = m; for (i = 0; i < m - 1; ++i) bmBc[x[i]] = m - i - 1; } void suffixes(char *x, int m, int *suff) { int f, g, i; suff[m - 1] = m; g = m - 1; for (i = m - 2; i >= 0; --i) { if (i > g && suff[i + m - 1 - f] < i - g) suff[i] = suff[i + m - 1 - f]; else { if (i < g) g = i; f = i; while (g >= 0 && x[g] == x[g + m - 1 - f]) --g; suff[i] = f - g; } } } void preBmGs(char *x, int m, int bmGs[]) { int i, j, suff[XSIZE]; suffixes(x, m, suff); for (i = 0; i < m; ++i) bmGs[i] = m; j = 0; for (i = m - 1; i >= 0; --i) if (suff[i] == i + 1) for (; j < m - 1 - i; ++j) if (bmGs[j] == m) bmGs[j] = m - 1 - i; for (i = 0; i <= m - 2; ++i) bmGs[m - 1 - suff[i]] = m - 1 - i; } void BM(char *x, int m, char *y, int n) { int i, j, bmGs[XSIZE], bmBc[ASIZE]; /* Preprocessing */ preBmGs(x, m, bmGs); preBmBc(x, m, bmBc); /* Searching */ j = 0; while (j <= n - m) { for (i = m - 1; i >= 0 && x[i] == y[i + j]; --i); if (i < 0) { OUTPUT(j); j += bmGs[0]; } else j += MAX(bmGs[i], bmBc[y[i + j]] - m + 1 + i); } } int main(int argc, char* argv[]) { BM(PatternStr,strlen(PatternStr),MainStr,strlen(MainStr)); getchar(); return 0; } // BM.cpp : Defines the entry point for the console application. // #include <stdio.h> #include <string> #define XSIZE 256 #define ASIZE 256 #define MAX(x,y) (x) > (y)? (x):(y) #define OUTPUT(x) printf("匹配位置:%d/n",x) #define PatternStr "付" #define MainStr "AAAAa付付b付" void preBmBc(char *x, int m, int bmBc[]) { int i; for (i = 0; i < ASIZE; ++i) bmBc[i] = m; for (i = 0; i < m - 1; ++i) bmBc[x[i]] = m - i - 1; } void suffixes(char *x, int m, int *suff) { int f, g, i; suff[m - 1] = m; g = m - 1; for (i = m - 2; i >= 0; --i) { if (i > g && suff[i + m - 1 - f] < i - g) suff[i] = suff[i + m - 1 - f]; else { if (i < g) g = i; f = i; while (g >= 0 && x[g] == x[g + m - 1 - f]) --g; suff[i] = f - g; } } } void preBmGs(char *x, int m, int bmGs[]) { int i, j, suff[XSIZE]; suffixes(x, m, suff); for (i = 0; i < m; ++i) bmGs[i] = m; j = 0; for (i = m - 1;
通義靈碼自從入職阿里雲以來備受行業關注。5 月 24 日,阿里雲工程師奔赴北京、成都、杭州三城,向企業和開發者介紹並演示通義靈碼,通義靈碼依然是大家話題的C位,並收穫了衆多粉絲。 @杭州 阿里雲金融創新峯會 今天,2024 阿里雲金融創新峯
隨着業務的發展,文件數量和文件大小會急劇增加,文件遷移的數量和難度不斷攀升。oss_pipe 是rust編寫的文件遷移工具,旨在支撐大規模的文件遷移場景。 編寫 oss_pipe 的初衷 •同類產品面臨的問題 •rust 語
文盤rust 好久沒有更新了。這段時間筆者用rust寫了個小東西,跟各位分享一下 背景 隨着業務的發展,文件數量和文件大小會急劇增加,文件遷移的數量和難度不斷攀升。oss_pipe 是rust編寫的文件遷移工具,旨在支撐大規模的文件遷移場
5 月 9 日阿里雲 AI 峯會,阿里雲智能集團首席技術官周靖人宣佈,通義靈碼企業版正式發佈,滿足企業用戶的定製化需求,幫助企業提升研發效率。 通義靈碼是國內用戶規模第一的智能編碼助手,基於 SOTA 水準的通義千問代碼模型 Code-Qw
本文分享自華爲雲社區《華爲雲發佈CodeArts IDE for Python,極致優雅雲原生開發體驗》,作者:華爲雲頭條。 近日,華爲雲正式發佈CodeArts IDE for Python,這是一款內置華爲自主創新的Python語
通義靈碼|7X24的AI智能編程助手 工號:AI001 他叫通義靈碼,一個硅基生命。出生在0101星球,沒有性別,但有人格類型。 他是INTJ,建築師型人格,艾薩克·牛頓和甘道夫同款。 他會寫一點代碼,但不如我們會得多。我看了下他的簡歷,
如何更好地與 AI 爲伴,做時代的先進開發者?4 月 17 日,阿里雲推出的 AI 編程助手通義靈碼與雲工開物“高校訓練營”走進西安多所高校開啓實操培訓,結合 AI 輔助編程的發展背景、通義靈碼的具體能力和應用實操,幫助在校大學生了解人工智
簡介 在計算機中要對給定的數據集進行若干處理,首要任務是把數據集的一部分(當數據量非常大時,可能只能一部分一部分地讀取數據到內存中來處理)或全部存儲到內存中,然後再對內存中的數據進行各種處理。例如,對於數據集 S{1,2,3,4,5,6
Xmake 是一個基於 Lua 的輕量級跨平臺構建工具。 它非常的輕量,沒有任何依賴,因爲它內置了 Lua 運行時。 它使用 xmake.lua 維護項目構建,相比 makefile/CMakeLists.txt,配置語法更加簡潔直觀,
人狠話不多,會熟練使用 200 多種編程語言,寫得了代碼,做得了測試,7 天 24 小時隨叫隨到…… 硅基程序員通義靈碼首次入職阿里雲,有網友說:終於不穿格子衫了! 還有網友說:這簡歷,作爲一個 HR 我很難不心動! 人狠話不多的通義靈碼,
阿里雲面向全國大學生正式啓動雲工開物“高校訓練營“,計劃在 15 座城市、70 所全國高校巡迴開營,幫助學生用雲計算與 AI 工具進行雲上開發及應用創新。首期高校訓練營-通義靈碼專場在武漢大學開營。 本次分享,以阿里雲通義靈碼爲核心,聚焦代
如今,大量程序員已經習慣在 AI 輔助下進行編程。據調研,AI 編碼工具將程序員工作效率提升 50% 以上。 通義靈碼是目前國內最受開發者喜愛的 AI 編碼助手,可以提供行級/函數級實時續寫、自然語言生成代碼、單元測試生成、代碼優化、註釋生
直播概要: 隨着計算機的蓬勃發展,互聯網進入大數據和人工智能時代,爲了解決信息過載和長尾商品,推薦系統成爲唯一選擇,而面對不同的業務場景,爲了解決業務痛點,會根據不同的場景特點尋找不同的方法和手段來解決推薦中實際遇到的問題。在智慧家庭領域,
{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"typ
一、前言 用ffmpeg做音視頻保存到mp4文件,都會遇到一個問題,尤其是在視頻監控行業,就是監控攝像頭設置的音頻是PCM/G711A/G711U,解碼後對應的格式是pcm_s16be/pcm_alaw/pcm_mulaw,將這個原始的音頻