This project is a collection of C++ implementations for various Data Structures and Algorithms (DSA) problems, with a focus on Dynamic Programming. It is organized for learning, experimenting, and practicing core algorithmic techniques.
- main.cpp: Entry point that demonstrates and tests the algorithms.
- include/: Header files for each algorithm or utility.
- src/: Source files implementing the algorithms.
- utils/: Utility programs for code generation and boilerplate creation.
- build/: Compiled binaries (e.g.,
main.exe). - notes/: Markdown notes on DSA concepts (e.g.,
basics.md). - makefile: Build automation for compiling and running the project.
- sources.txt: List of source files to be compiled.
- Dynamic Programming: Fibonacci, Factorial, Shortest Grid Path, Triangular Sum, Special Fibonacci, etc.
- Searching: Binary Search
- Array Operations: Min/Max in Array, Number Reversal
- String Operations: String Reverse, Uppercase Letter in String
- Utilities: Print line, Print numbers
generate_sources.cpp: Scans the project and updatessources.txtwith all relevant source files.boilerplate.cpp: Generates boilerplate code for new algorithm modules.
- C++ compiler (e.g., g++)
- Make (for using the provided makefile)
- Build all utilities and main program:
make build_all
- Run the main program:
Or run via the makefile:
./build/main.exe
make build_main
- See
notes/basics.mdfor a summary of dynamic programming concepts. - Each algorithm is modularized for clarity and reusability.
- Use
boilerplate.cppto generate new.cppand.hfiles for your algorithm. - Implement your logic, then rebuild the project.
This project is for educational purposes.