مسار تعلمي لحل المشكلات

السلام عليكم ورحمة الله وبركاته

وقت القراءة: 5 دقائق

المقدمة

هذه كانت مجرد عمل شخصي لي لتجميع المعلومات والمواقع والفيديوهات التي استفدت منها شخصيا

اخر اضافاتي في هذه التجميعة كانت في 2020/8/26 وقررت ان شاركها للعامة في 2022/1/1

اي اقتراح اضافي من قبل الناس أي ليست ضمن تجميعتي الاصلية سيتم وضع علامة + قبلها

C++ Basics

Adel Nasim (متوسط)
Mohamed El Desouki (متوسط - اكاديمي)
Mostafa Saad (متقدم)
Mostafa Saad (لصغار السن والمبتدئيين)

قبل ان تبدا عليك ان تعرف انك ان وقفت في مشكلة ما فيجب ان تبحث بنفسك وتقرأ مقالات وفيديوهات ولا تعتمد علي مصدر واحد ابدا

Web Sites

Geeks for Geeks

هذا أعظم موقع للمقالات يجب ان تعتاد عليه وتقرأ مقالات من الآن

Stack Overflow

لا يوجد سؤال الا وعليه إجاباته

في مواقع أخرى فيها مشاكل مميزة لل interview مشاكل متنوعة تحتاج إلى انك تفكر باحسن حل عندك مثل مثل leetcode و codesignal و hackerrank

هنا ستجد اساليب مميزة للتعلم

https://leetcode.com/explore/learn

Sheets

Sheet Assiut for Basics

شيت اسيوط يعد من أفضل الأشياء التي قد تبدأ فيها حل فيه لحد ما تتمكن وتعتاد علي الحل والمشاكل

بعد ما تشعر أن المشاكل أصبحت سهلة وتمكنت في اللغة وحل المشاكل بها فابدا بـ شيت مصطفى سعد

Sheet Moustafa Saad

حاول ان تجعل شيت مصطفى سعد الروتين اليومي لك بمعنى حل مسألتين A كل يوم

+ Problem-Solving-Training

هذه خارطة طريق المهندس محمد أيمن لحل المشكلات

STL

الـ STL هي Built in datastructre ستفيدك جدا في حل المشاكل المتقدمة وستفتح تفكيرك في استخدام افضل structure ووسيلة لحل المشاكل

ركز على (vector, Pair, Set, Map) في البداية

Adel Nasim
CppNuts

STL Functions

CppNuts

اهم Datastructre لديك هم الـ vector, pair, set, map فاجعلهم اوليتك لكن هذا لا يعني أن تهمل الباقي حين تتعلم الـ BigO ستطيع المقارنة والاختيار مابين stL المختلفة

من المهم جدا أن تأخد كورس Datastructre لتعرف كيف يتم بناء الـ Datastructre لان هذا سيسهل عليك اشياء كثيرة وهتفهم الـ STL بشكل أفضل

وهناك اشياء من الصعب أن تفهمها أو تحلها الا من خلال معرفة كيف تم بناء الـ STL من الداخل

حاول ان تحل الآن كل يوم 4 مشاكل A من شيت مصطفى سعد ,وانظر هل ستستطيع ان تحل مشكلة B ؟

Algorithms

انت مع كل موضوع او شيء ستتعلمه، ستتعلم الخوارزمات الخاصة بها فالخورزمات مهمة لأنها ستساعدك في حل المشكلة باحسن وسيلة ممكنة وأقل تكلفة سواء كسرعة او كمساحة

اهم شيء تتعلم كيف تحسب الـ BigO الخاصة بالكود لكي تستطيع أن تختار افضل خوارزمية واحسن حل للمشكلة

Complexity

Muhammed Afifi #1
Muhammed Afifi #2
Adel Nasim

وهذا الفيديو سيشرح لك مشكلة شائعة ممكن تواجهك وكيفية التغلب عليها

Overflow Problem

Muhammed Afifi

Two Pointers

Mostafa Saad

Prefix Sum

Muhammed Afifi
Mostafa Saad

Binary Search

Errichto
Muhammed Afifi

Upper bound & Lower bound

https://codingblocks.com/resources/binary-search-upper-lower-bound/

Built-in Functions

code_report

Modular

Mostafa Saad
Muhammed Afifi

Sheet Assiut for STL & Algorithms

https://codeforces.com/group/91LhUEgb6Y/contests

Structured Binding

Jason Turner
Cherno
Rez Bot

https://skebanga.github.io/structured-bindings/

Number Theory

Code NCode

Recursion

Neso Academy

https://ideone.com/qbrcgS

Graph Theory

Complete course

WilliamFiset
Code NCode #1
+ Code NCode #2

يمكنك متابعتهما بالتزامن مع باقي الفيديوهات المرفقة
الروابط المرفقة هى التي شاهدتنا بنفسي لا اكثر

Intro

Code NCode
WilliamFiset #1
WilliamFiset #2

Representation

Muhammed Afifi
Code NCode

DFS

WilliamFiset #1
WilliamFiset #2
Code NCode #1
Code NCode #2
Muhammed Afifi #1
Muhammed Afifi #2

Arrival and Departure time in vertices in DFS

https://www.techiedelight.com/arrival-departure-time-vertices-dfs/

معلومة: ان اردنا معرفة هل الجراف متصل ام لا نطبق المعادلة التالية نمسك أول عقدة لو كان وقت البداية يساوي 0 ووقت النهاية يساوي (عدد العقد * 2) - 1

check first Node
if Arrival = 0 and Departure = Nodes*2 - 1
then the graph is Connected

Types of edges in DFS

https://www.techiedelight.com/types-edges-involved-dfs-relation/
https://www.geeksforgeeks.org/tree-back-edge-and-cross-edges-in-dfs-of-graph/
Jenny

Path X -> Y

Back Edge :
if Arrival of  Y < Arrival of X
then there is a path from Y to X

Cross Edge :
if Arrival of  Y < Arrival of X
then there is NO path from Y to X

Forward Edge :
if Arrival of X < Arrival of Y
then there is a path from X to Y

The Code
by color: https://ideone.com/wjnbDG
by arrival & departure : https://ideone.com/vt8RQE

Detect cycle in directed graph

https://www.geeksforgeeks.org/detect-cycle-in-a-graph/

GeeksforGeeks
GeeksforGeeks using coloring method
Jenny

https://www.geeksforgeeks.org/detect-cycle-direct-graph-using-colors/

https://codeforces.com/blog/entry/64903

The Code
with recursion : https://ideone.com/QIw2vh
without recursion : https://ideone.com/xOyU65

Topological Sorting (DAG)

WilliamFiset

https://www.techiedelight.com/topological-sorting-dag/

The Code
https://ideone.com/ymaLbX
https://ideone.com/wPnSgu

Longest Path on tree (DFS)

SolverToBe #1
SolverToBe #2

The Code
https://ideone.com/1d1rTy
https://ideone.com/Ell6mN
https://ideone.com/RasHoX

BFS

WilliamFiset
Jenny only first 8 minutes
Muhammed Afifi
Mostafa Saad

The Code
https://ideone.com/j2w2Qm

Grid (maze or 2d cell)

SolverToBe
Back To Back SWE
WilliamFiset

https://www.geeksforgeeks.org/shortest-distance-two-cells-matrix-grid/

Bipartite graph

https://www.techiedelight.com/determine-given-graph-bipartite-graph-using-dfs/
https://www.geeksforgeeks.org/check-if-a-given-graph-is-bipartite-using-dfs/

The Code
https://ideone.com/pWyN1a

Bridges (cut edge) in graph

SolverToBe
WilliamFiset
Jenny

https://www.geeksforgeeks.org/bridge-in-a-graph/
https://cp-algorithms.com/graph/bridge-searching.html

Articulation point

https://www.geeksforgeeks.org/articulation-points-or-cut-vertices-in-a-graph/
https://cp-algorithms.com/graph/cutpoints.html

WilliamFiset

(2-Edge Connectivity in a Graph)
https://www.techiedelight.com/2-edge-connectivity-graph/
(2-Node Connectivity in a Graph)
https://www.techiedelight.com/2-vertex-connectivity-graph/

Strongly connected component

https://www.techiedelight.com/check-given-graph-strongly-connected-not/
https://www.geeksforgeeks.org/strongly-connected-components/
https://cp-algorithms.com/graph/strongly-connected-components.html

Minimum spanning tree

Jenny #1
Jenny #2
Jenny #3

DP

+ Errichto
+ Mostafa Saad
+ Code NCode #1
+ Code NCode #2