diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..7db06cb --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,72 @@ +{ + "files.associations": { + "array": "cpp", + "atomic": "cpp", + "*.tcc": "cpp", + "bitset": "cpp", + "cctype": "cpp", + "cfenv": "cpp", + "chrono": "cpp", + "cinttypes": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "codecvt": "cpp", + "complex": "cpp", + "condition_variable": "cpp", + "csetjmp": "cpp", + "csignal": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cuchar": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "forward_list": "cpp", + "list": "cpp", + "unordered_map": "cpp", + "unordered_set": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "map": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "random": "cpp", + "ratio": "cpp", + "regex": "cpp", + "set": "cpp", + "string": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "fstream": "cpp", + "future": "cpp", + "initializer_list": "cpp", + "iomanip": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "mutex": "cpp", + "new": "cpp", + "ostream": "cpp", + "scoped_allocator": "cpp", + "shared_mutex": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "thread": "cpp", + "typeindex": "cpp", + "typeinfo": "cpp", + "valarray": "cpp" + } +} \ No newline at end of file diff --git a/C++/Algorithm/Searching/dfsRecursive.cpp b/C++/Algorithm/Searching/dfsRecursive.cpp new file mode 100644 index 0000000..e9f5e5b --- /dev/null +++ b/C++/Algorithm/Searching/dfsRecursive.cpp @@ -0,0 +1,62 @@ +/* + Author : Krutika Bhatt + Date : 07/10/2021 + Description : Depth-first search (DFS) is an algorithm for traversing elements in 2D Matrix +*/ + +/* + Time Complexity : O(M*N) + Space Complexity : O(M*N) + here, M is the number of rows and N is the number of columns +*/ + +#include + +using namespace std; + + +void DFSrecursive(int grid[][4],int row,int col,bool visited[][4]) { + + int length = 4; + int height = 4; + + if (row < 0 || col < 0 || row >= length || col >= height || visited[row][col]) { + return; + } + + + //mark the cell visited + visited[row][col] = true; + + cout << grid[row][col] << " "; + + DFSrecursive(grid, row+ 1, col,visited); // go right to that cell in matrix + DFSrecursive(grid, row- 1, col,visited); //go left to that cell in matrix + DFSrecursive(grid, row, col + 1,visited); //go down to that cell in matrix + DFSrecursive(grid, row, col - 1,visited); // go up to that cell in matrix + +} +void DFS(int grid[4][4]) { + + // Maintain a boolean 2D Array to check if the elements are visited or not + bool visited[4][4]; + memset(visited, false, sizeof visited); + + // Start the DFS recursive function with start row=0 and start col=0 + DFSrecursive(grid,0,0,visited); +} + +int main() { + + int grid[4][4] = { + {1, 2, 3, 4}, + {5, 6, 7, 8}, + {9, 10, 11, 12}, + {13, 14, 15, 16} + }; + + cout <<"The Depth first traversal to the matrix is : "; + DFS(grid); + + return 0; +}