{"id":38673937,"url":"https://github.com/ffekirnew/dynamic-programming-start","last_synced_at":"2026-01-17T10:00:14.052Z","repository":{"id":180765609,"uuid":"665431756","full_name":"ffekirnew/dynamic-programming-start","owner":"ffekirnew","description":"This is a comprehensive GitHub repository dedicated to mastering dynamic programming through a collection of solutions to various challenging problems. From optimizing algorithms to efficient resource allocation, this repository provides a solid foundation for developers seeking to enhance their dynamic programming skills.","archived":false,"fork":false,"pushed_at":"2023-10-22T15:49:21.000Z","size":55,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-10-22T16:34:42.760Z","etag":null,"topics":["competitive-programming","dynamic-programming","leetcode","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ffekirnew.png","metadata":{"files":{"readme":"README.md","changelog":"change_making/README.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-07-12T07:33:31.000Z","updated_at":"2023-07-18T09:41:57.000Z","dependencies_parsed_at":"2023-07-12T19:39:26.615Z","dependency_job_id":"4189c6ff-fff2-4743-bcf7-9b6e3a8354f9","html_url":"https://github.com/ffekirnew/dynamic-programming-start","commit_stats":null,"previous_names":["ffekirnew/dynamic-programming-start"],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:github/ffekirnew/dynamic-programming-start","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ffekirnew%2Fdynamic-programming-start","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ffekirnew%2Fdynamic-programming-start/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ffekirnew%2Fdynamic-programming-start/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ffekirnew%2Fdynamic-programming-start/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ffekirnew","download_url":"https://codeload.github.com/ffekirnew/dynamic-programming-start/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ffekirnew%2Fdynamic-programming-start/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28505570,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T06:57:29.758Z","status":"ssl_error","status_checked_at":"2026-01-17T06:56:03.931Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["competitive-programming","dynamic-programming","leetcode","python3"],"created_at":"2026-01-17T10:00:13.061Z","updated_at":"2026-01-17T10:00:14.027Z","avatar_url":"https://github.com/ffekirnew.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dynamic Programming Start\n\nThis github repository is for the study of dynamic programming through the book `Programming Interview Problems: Dynamic Programming` by \u003cb\u003eLeonardo Rossi\u003c/b\u003e and beyond. The book contains 25 problems and their solutions. The book also provides the solutions in python if you wanted to check the original solutions. It also goes in deeper in explaining them (problems and solutions). In this repository, though, I will also link Leetcode problems that are similar to the problems in the book and can be easily solved with a copy-paste afterwards or a little bit of modification. I will also provide my own solutions to the problems and will try to provide as many solutions as possible.\n\n### Table of Contents\n\n- [Dynamic Programming Start](#dynamic-programming-start)\n  - [Table of Contents](#table-of-contents)\n  - [Problems Covered](#problems-covered)\n  - [Usage](#usage)\n  - [Contribution](#contribution)\n  - [References](#references)\n  - [Author](#author)\n  - [License](#license)\n\n## Problems Covered\n\n- [x] [Problem 1: Fibonacci Numbers](the_fibonacci_sequence)\n- [x] [Problem 2: Optimal Stock Market Strategy](optimal_stock_market_strategy)\n- [x] [Problem 3: Change Making](change_making)\n- [x] [Problem 4: Number of Expressions with a target Result](number_of_expressions_with_a_target_result)\n- [x] [Problem 5: Partitioning a set into equal-sum parts](partitioning_a_set_into_equal_sum_parts)\n- [x] [Problem 6: Splitting a string without spaces into words](splitting_a_string_without_spaces_into_words)\n- [x] [Problem 7: The number of binary search trees](the_number_of_binary_search_trees)\n- [x] [Problem 8: The maximum-sum subarray](the_maximum_sum_subarray)\n- [x] [Problem 9: The maximum-product subarray](the_maximum_product_subarray)\n- [x] [Problem 10: Shortest pair of subarrays with target sum](shortest_pair_of_subarrays_with_target_sum)\n- [x] [Problem 11: Longest palindromic substring](longest_palindromic_substring)\n- [x] [Problem 12: Longest valid parentheses substring](longest_valid_parentheses_substring)\n- [x] [Problem 13: Longest increasing subsequence](longest_increasing_subsequence)\n- [x] [Problem 14: Longest arithmetic subsequence](longest_arithmetic_subsequence)\n- [ ] [Problem 15: Dealing the best hand of cards](dealing_the_best_hand_of_cards)\n- [x] [Problem 16: Number of ways to climb stairs](number_of_ways_to_climb_stairs)\n- [x] [Problem 17: Number of paths through maze](number_of_paths_through_maze)\n- [x] [Problem 18: Maximum-score path through maze](maximum_score_path_through_maze)\n- [x] [Problem 19: Subarray sum](subarray_sum)\n- [x] [Problem 20: Submatrix sum](submatrix_sum)\n- [ ] [Problem 21: Largest square submatrix of ones](largest_square_submatrix_of_ones)\n- [ ] [Problem 22: Largest rectangle in skyline](largest_rectangle_in_skyline)\n- [ ] [Problem 23: Largest submatrix of ones](largest_submatrix_of_ones)\n- [ ] [Problem 24: Interleaved strings](interleaved_strings)\n- [ ] [Problem 25: Regular expression matching](regular_expression_matching)\n\n## Usage\n\nEach problem is contained in a folder with the same name as the problem. The folder contains a `README.md` file and a `solution.py` file. The `README.md` file contains the problem description and the solution description(s). The solution file contains a class with the same name as the problem and consequent class methods for different solutions that all receive the input and return the output. The input and output are described in the problem description.\n\nA typical problem folder looks like this, sut some of them might have a unittest file too:\n\n```sh\n.\n├── problem_name\n│   ├── README.md\n│   └── solution.py\n```\n\nA typical `README.md` file looks like this:\n\n```markdown\n# Problem Name\n\n## Problem description\n\n    ...\n\n## Solutions\n\n    ...\n\n## Leetcode\n\n    ...\n```\n\nAnd a typical solution file looks like this:\n\n```python\nclass ProblemName:\n    def solution_1(self, input):\n        # Solution 1\n        return output\n\n    def solution_2(self, input):\n        # Solution 2\n        return output\n```\n\n## Contribution\n\nIf you want to contribute to this repository, you can fork this repository and create a pull request with your solution. The solution must be in the `solution.py` file and the problem description must be in the `README.md` file. The solution must be in the same format as the other solutions. If you would like me to attempt a problem, you can create an issue with the problem name and description.\n\n## References\n\n- [Programming Interview Problems: Dynamic Programming](https://www.amazon.com/Programming-Interview-Problems-Dynamic-solutions-ebook/dp/B08RRQWV21) ©️ 2020 \u003cb\u003eLeonardo Rossi\u003c/b\u003e.\n\nThe first 25 problems in this repository are from the book. The solutions are mine. But, of course, might ocassionally be very similar to the ones on the book, since we are both going for many and efficient algorithms and there are only so many of those for a particular problem.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fffekirnew%2Fdynamic-programming-start","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fffekirnew%2Fdynamic-programming-start","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fffekirnew%2Fdynamic-programming-start/lists"}