TheAlgorithms / C-Sharp

All algorithms implemented in C#.
GNU General Public License v3.0
7.12k stars 1.52k forks source link

Contribution Request: Organizing And Adding Dynamic Programming Problems #398

Closed craftycoder07 closed 1 year ago

craftycoder07 commented 1 year ago

I've noticed that there are some dynamic programming problems scattered throughout this repository. I believe it would greatly benefit the community if we could gather all these problems under a dedicated 'Dynamic Programming' folder for easier accessibility, especially given how frequently dynamic programming questions come up in interviews.

Here are a couple of reasons why this would be a valuable addition:

Interview Preparation: Dynamic programming is a key topic in technical interviews, and having these problems grouped together would be a valuable resource for users preparing for interviews. Improved Visibility: Currently, dynamic programming problems are a bit hard to spot within the repository. Grouping all of them under one folder will make them much more visible.

I can start organizing them under Problems -> Dynamic Programming folder.

Initial suggestions for Dynamic Programming problems as follows: NEW PROBLEMS 1) Find factorial of a given number (Also available in sequences) 2) Find nth number in a Fibonacci series (Also available in sequences)

REORGANIZING PROBLEMS TO ABOVE MENTIONED FOLDER 1) Problems -> Dynamic Coin Change 2) Strings -> Levenshtein Distance

Please let me know if you're open to this suggestion and if you have any specific preferences.

siriak commented 1 year ago

Thanks for reporting this. While I see that there is a problem with finding dynamic programming problems, reorganizing them is not simple. Factorials are in sequences because there are such sequences and we cannot just remove them from there. Other algorithms are organized according to the problem they solve and not the method they use to do that. Could you check how the mentioned algorithms are classified in other TheAlgorithms repos? We should do the same way everywhere

craftycoder07 commented 1 year ago

1) For JAVA repo => All of the mentioned algorithms are classified under DYNAMIC PROGRAMMING section. https://github.com/TheAlgorithms/Java/tree/master/src/main/java/com/thealgorithms/dynamicprogramming

2) For PYTHON => Factorial, Fibonacci and Coin Change are classified under DYNAMIC PROGRAMMING section. https://github.com/TheAlgorithms/Python/tree/master/dynamic_programming

3) For JAVASCRIPT => Fibonacci Coin Change and Levenshtein Distance are classified under DYNAMIC PROGRAMMING section. https://github.com/TheAlgorithms/JavaScript/tree/master/Dynamic-Programming

Is this something you were looking for @siriak ?

siriak commented 1 year ago

Well, I guess we could move them to dynamic programming folder then. I'm not sure what to do with sequences, though. It's a feature of this repo, and it's not present elsewhere. Let's leave sequences in sequences and move the other mentioned algorithms to dynamic programming as you have suggested.

craftycoder07 commented 1 year ago

Ok. I will start working on it.