軟體工程專業必須要會的演算法

2022-04-25 03:39:04 字數 1566 閱讀 1746

計算《部分匹配表》,移動位數 = 已匹配的字元數 - 對應的部分匹配值。

#include#include#includeusing namespace std;

void computeprefix(string s,int next)

}void kmpmatcher(string text,string pattern) ;

// trie adt

typedef struct trie trie_t;

struct trie

;// returns new trie node (initialized to nulls)

trie_node_t *getnode(void)

}return pnode;

}// initializes trie (root is dummy node)

void initialize(trie_t *ptrie)

// if not present, inserts key into trie

// if the key is prefix of trie node, just marks leaf node

void insert(trie_t *ptrie, char key)

pcrawl = pcrawl->children[index];

}// mark last node as leaf

pcrawl->value = ptrie->count;

}// returns non zero, if key presents in trie

int search(trie_t *ptrie, char key)

pcrawl = pcrawl->children[index];

}return (0 != pcrawl && pcrawl->value);

}// driver

int main()

;

char output[32] = ;

trie_t trie;

initialize(&trie);

// construct trie

for (int i = 0; i < array_size(keys); i++)

// search for different keys

printf("%s --- %s\n", "the", output[search(&trie, "the")]);

printf("%s --- %s\n", "these", output[search(&trie, "these")]);

printf("%s --- %s\n", "their", output[search(&trie, "their")]);

printf("%s --- %s\n", "thaw", output[search(&trie, "thaw")]);

return 0;

}

貪心演算法(英語:greedy algorithm),又稱貪婪演算法,是一種在每一步選擇中都採取在當前狀態下最好或最優(即最有利)的選擇,從而希望導致結果是最好或最優的演算法。

學習Github必須要會的知識

託管專案 存放專案 每個專案對應乙個倉庫,多個開源專案則有多個倉庫。收藏專案,方便下次檢視。深拷貝 被fork物件接受到fork的修改,等待張三檢視 合併。關注專案,當專案更新可接收到通知。發現 bug,但是目前沒有成型 需要討論時用。github主頁 倉庫主頁 個人主頁 向倉庫中新增檔案流程 設定...

軟體工程 軟體工程的概述

軟體工程是研究和應用如何以系統性的 規範化的 可定量的過程化方法去開發和維護軟體,以及如何把經過時間考 驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來的學科,它涉及到程式語言 資料庫 軟體 開發工具 系統平台 標準 設計模式等方面。先從軟體工程的第一章開始說起 軟體工程的概述,這一章是...

軟體工程 軟體工程的理解

四 軟體危機 五 軟體工程要素及其作用 針對本學期第一次軟體工程課後的思考題,參考課本以及網路上的資料,作出如下自己的思考理解。在此之前,我所做過的工程僅僅侷限於一些課程的大作業上,並沒有更進一步到軟體上面,僅僅是針對某乙個或者某一類問題進行解決。我的看法 1 書上的定義 書上給出了許許多多的定義,...