From 8135a2c967f5a8ff0614c20bfbbe241e1c02800d Mon Sep 17 00:00:00 2001 From: Bibaswan Roy <50978591+bibaswanroy@users.noreply.github.com> Date: Sat, 8 Oct 2022 16:06:29 +0530 Subject: [PATCH 1/3] Add files via upload --- C/dijkstra.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 C/dijkstra.c diff --git a/C/dijkstra.c b/C/dijkstra.c new file mode 100644 index 0000000..e64e067 --- /dev/null +++ b/C/dijkstra.c @@ -0,0 +1,73 @@ +#include +#include +#include + +int *parent, *keys; + +int minIndex(int *keys, int *visited, int n) +{ + int min = INT_MAX, ind = -1; + for (int i = 0; i < n; i++) + { + if (!visited[i] && keys[i] < min) + { + min = keys[i]; + ind = i; + } + } + return ind; +} + +void dijkstra(int adjmat[9][9], int n, int s) +{ + parent = (int *)malloc(n * sizeof(int)); + int *visited = (int *)calloc(n, sizeof(int)); + keys = (int *)malloc(n*sizeof(int)); + for (int i = 0; i < n; i++) + keys[i] = INT_MAX; + parent[s] = -1; + keys[s] = 0; + for (int i = 0; i < n ; i++) + { + int u = minIndex(keys, visited, n); + visited[u] = 1; + for (int v = 0; v < n; v++) + { + if (!visited[v] && adjmat[u][v] && keys[u] + adjmat[u][v] < keys[v]) + { + parent[v] = u; + keys[v] = keys[u] + adjmat[u][v]; + } + } + } +} + +void path(int s, int d) +{ + if (d == s) + printf("%d ", d); + else + { + path(s, parent[d]); + printf("%d ", d); + } +} + +int main() +{ + int mat[9][9] = {{ 0, 4, 0, 0, 0, 0, 0, 8, 0 }, + { 4, 0, 8, 0, 0, 0, 0, 11, 0 }, + { 0, 8, 0, 7, 0, 4, 0, 0, 2 }, + { 0, 0, 7, 0, 9, 14, 0, 0, 0 }, + { 0, 0, 0, 9, 0, 10, 0, 0, 0 }, + { 0, 0, 4, 14, 10, 0, 2, 0, 0 }, + { 0, 0, 0, 0, 0, 2, 0, 1, 6 }, + { 8, 11, 0, 0, 0, 0, 1, 0, 7 }, + { 0, 0, 2, 0, 0, 0, 6, 7, 0 }}; + dijkstra(mat, 9, 7); + path(7, 4); + printf("\nTotal Cost for the path is %d", keys[4]); + // for(int i = 0 ; i < 5 ; i++) + // printf("%d ", keys[i]); + return 0; +} \ No newline at end of file From e3e0253af842230cf124e35298cad7ccc7d4891a Mon Sep 17 00:00:00 2001 From: Bibaswan Roy <50978591+bibaswanroy@users.noreply.github.com> Date: Sat, 8 Oct 2022 16:08:04 +0530 Subject: [PATCH 2/3] Add files via upload --- kmp.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 kmp.cpp diff --git a/kmp.cpp b/kmp.cpp new file mode 100644 index 0000000..40d028b --- /dev/null +++ b/kmp.cpp @@ -0,0 +1,52 @@ +#include +using namespace std; + + +void printer(int *arr, int m) +{ + for(int i = 0 ; i < m ; i++) + cout << arr[i] << " "; +} + +int *kmpPrefix(char *str) +{ + int q, k, m = strlen(str); + int *pref = new int[m]; + pref[0] = 0; + k = 0; + for(q = 1 ; q < m ; q++) + { + while(k > 0 && str[k] != str[q]) + k = pref[k-1]; + if(str[k] == str[q]) + k++; + pref[q] = k; + } + return pref; +} + +void matcher(char *txt, char *pat) +{ + int q, i, n = strlen(txt), m = strlen(pat), *pi = kmpPrefix(pat); + for(i = 0 ; i < n ; i++) + { + while(q > 0 && pat[q] != txt[i]) + q = pi[q-1]; + if(pat[q] == txt[i]) + q++; + if(q == m-1) + { + cout << "\nPattern found with shifts: " << i-q+1; + q = pi[q]-1; + } + } +} + +int main() +{ + char p[] = "ABABCABAB", t[] = "ABABDABACDABABCABAB"; + // int *pi = kmpPrefix(p, 7); + // printer(pi, 7); + matcher(t, p); + return 0; +} \ No newline at end of file From 46d4d723ae4c193b8f66a083457720700a17b440 Mon Sep 17 00:00:00 2001 From: Bibaswan Roy <50978591+bibaswanroy@users.noreply.github.com> Date: Sat, 8 Oct 2022 16:09:25 +0530 Subject: [PATCH 3/3] Revert "Hactoberfest2022" --- kmp.cpp | 52 ---------------------------------------------------- 1 file changed, 52 deletions(-) delete mode 100644 kmp.cpp diff --git a/kmp.cpp b/kmp.cpp deleted file mode 100644 index 40d028b..0000000 --- a/kmp.cpp +++ /dev/null @@ -1,52 +0,0 @@ -#include -using namespace std; - - -void printer(int *arr, int m) -{ - for(int i = 0 ; i < m ; i++) - cout << arr[i] << " "; -} - -int *kmpPrefix(char *str) -{ - int q, k, m = strlen(str); - int *pref = new int[m]; - pref[0] = 0; - k = 0; - for(q = 1 ; q < m ; q++) - { - while(k > 0 && str[k] != str[q]) - k = pref[k-1]; - if(str[k] == str[q]) - k++; - pref[q] = k; - } - return pref; -} - -void matcher(char *txt, char *pat) -{ - int q, i, n = strlen(txt), m = strlen(pat), *pi = kmpPrefix(pat); - for(i = 0 ; i < n ; i++) - { - while(q > 0 && pat[q] != txt[i]) - q = pi[q-1]; - if(pat[q] == txt[i]) - q++; - if(q == m-1) - { - cout << "\nPattern found with shifts: " << i-q+1; - q = pi[q]-1; - } - } -} - -int main() -{ - char p[] = "ABABCABAB", t[] = "ABABDABACDABABCABAB"; - // int *pi = kmpPrefix(p, 7); - // printer(pi, 7); - matcher(t, p); - return 0; -} \ No newline at end of file