Our project goal is to categorize different dynamic problem type, and implemente them with
the top-down approach and the bottom-up approach. These two approaches solve
the same problems but differ in how they compute and store intermediate
results. By implementing both approaches, the project evaluates their differences in structure,
readability, and computational performance.
Tools:
- Java JDK 17+
- Gradle
Build: ./gradlew build
Run: ./gradlew run
- Brainpower: bottomup
- CoinChange: topdown, bottomup
- DecodeWays: topdown, bottomup, retrieve
- DeleteAndEarn: topdown
- HouseRobber: topdown
- JumpGame: topdown, bottomup
- LongestIncreasingSubsequence: topdown, bottomup
- LongestValidParentheses: topdown, bottomup
- MatrixChainMultiplication: topdown, bottomup, retrieve
- MaxSubarray: topdown, bottomup, retrieve
- MinCostClimbingStair: topdown, bottomup
- MinCostTicket: bottomup
- Palindrome: topdown, bottomup, retrieve
- Fibonacci: topdown, bottomup
- CountNumberUniqueDigits: topdown, bottomup
- MaximumProductCutting: topdown, bottomup
- PerfectSquares: topdown, bottomup, retrieve
- Tribonacci: topdown, bottomup
- TwoKeysKeyboard: topdown
- EggDrop: topdown, bottomup
- Interleaving Strings: topdown, bottomup, retrieve
- ThreeStrings: topdown, bottomup
- DistinctSubsequences: bottomup
- LongestCommonSubsequence: topdown, bottomup, retrieve
- MinimumDeleteSum: topdown, bottomup
- MinimumEditDistance: topdown, bottomup
- MinTimeColorfulRope: topdown, bottomup
- SequenceAlignment: bottomup
- ShortestCommonSuperSequence: topdown, bottomup, retrieve
- UncrossedLine: bottomup, retrieve
- WildCarePatternMatching: topdown, bottomup
- Wordbreak: topdown, bottomup
- Bellnumber: topdown, bottomup
- CountSquares: bottomup
- DiceThrow: topdown, bottomup
- MaixmumSquare: topdown, bottomup, retrieve
- MinPathSum: bottomup
- Pascal: topdown
- Triangle: topdown, bottomup, retrieve
- UniquePath: topdown, bottomup
- DoubleKnapsack: topdown
- Knapsack: topdown, bottomup
- MultipleKnapsack: topdown
- OneAndZeros: topdown
- MaximalIndependentSetPath: topdown, bottomup
- Dijkstra: bottomup