From ee15670a6a8425b88b562d376703153d7a6810bb Mon Sep 17 00:00:00 2001 From: Roshil Kapatel Date: Sat, 3 Oct 2020 22:07:10 +0530 Subject: [PATCH 1/2] Prims algorithm for minimun spanning tree is added --- prims_algo_for_mst.cpp | 95 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 prims_algo_for_mst.cpp diff --git a/prims_algo_for_mst.cpp b/prims_algo_for_mst.cpp new file mode 100644 index 0000000..32b2d57 --- /dev/null +++ b/prims_algo_for_mst.cpp @@ -0,0 +1,95 @@ + +#include +using namespace std; + + +#define V 5 + +// A utility function to find the vertex with +// minimum key value, from the set of vertices +// not yet included in MST +int minKey(int key[], bool mstSet[]) +{ + // Initialize min value + int min = INT_MAX, min_index; + + for (int v = 0; v < V; v++) + if (mstSet[v] == false && key[v] < min) + min = key[v], min_index = v; + + return min_index; +} + +// A utility function to print the +// constructed MST stored in parent[] +void printMST(int parent[], int graph[V][V]) +{ + cout<<"Edge \tWeight\n"; + for (int i = 1; i < V; i++) + cout< Date: Sat, 3 Oct 2020 22:26:12 +0530 Subject: [PATCH 2/2] KMP algorithm is implemented in CPP --- KMP_algo.cpp | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 KMP_algo.cpp diff --git a/KMP_algo.cpp b/KMP_algo.cpp new file mode 100644 index 0000000..630c2cb --- /dev/null +++ b/KMP_algo.cpp @@ -0,0 +1,65 @@ + +#include +#include +using namespace std; +void preKMP(string pattern, int f[]) +{ + int m = pattern.length(), k; + f[0] = -1; + for (int i = 1; i < m; i++) + { + k = f[i - 1]; + while (k >= 0) + { + if (pattern[k] == pattern[i - 1]) + break; + else + k = f[k]; + } + f[i] = k + 1; + } +} + +//check whether target string contains pattern +bool KMP(string pattern, string target) +{ + int m = pattern.length(); + int n = target.length(); + int f[m]; + preKMP(pattern, f); + int i = 0; + int k = 0; + while (i < n) + { + if (k == -1) + { + i++; + k = 0; + } + else if (target[i] == pattern[k]) + { + i++; + k++; + if (k == m) + return 1; + } + else + k = f[k]; + } + return 0; +} + +int main() +{ + string tar = "Roshil is a coder who likes to code"; + string pat = "code"; + if (KMP(pat, tar)) + cout<<"'"<