0Pricing
Coding Interview Prep · درس

عدّ المسارات على شبكة

جمع المسارات من زاوية إلى أخرى

عدّ المسارات على شبكة درس مجاني في Coding Interview Prep على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Coding Interview Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Coding Interview Prep 4 دروس في المجموع.

مسألة الشبكة الكلاسيكية

تبدأ من الزاوية العلوية اليسرى لشبكة وتريد الوصول إلى الزاوية السفلية اليمنى. تتحرك في كل خطوة إلى اليمين أو إلى الأسفل. كم عدد المسارات المختلفة الموجودة؟

لماذا تناسبها DP

يمكن الوصول إلى كل خلية من الخلية التي فوقها أو الخلية الموجودة إلى يسارها. هذا التداخل هو بالضبط سبب كون هذه المسألة مسألة DP.

حدّد الحالة

لتكن dp[i][j] عدد الطرق للوصول إلى الخلية (i, j) من نقطة البداية. تسمية الحالة بوضوح تمثّل نصف الحل.

الانتقال

لا تصل إلى الخلية إلا من الأعلى أو من اليسار، لذلك يكون العدد هو مجموعهما. هذا هو الانتقال الذي يحرّك الجدول بأكمله.

dp[i][j] = dp[i-1][j] + dp[i][j-1]

الحالة الأساسية

للخلية الابتدائية طريقة واحدة فقط للوصول إليها: ألا تفعل شيئًا. لذلك تكون قيمة dp[0][0] مساوية لـ 1 قبل ملء أي شيء آخر.

dp[0][0] = 1

للحواف مسار واحد

للخلايا الموجودة في الصف العلوي أو العمود الأيسر مسار مستقيم واحد. يكون العدد فيها دائمًا 1، لأن أحد الجارين يقع خارج الشبكة.

أنشئ الجدول

أنشئ جدولًا بحجم m by n واملأه بالأصفار. يضمن تحديد حجمه مسبقًا بقاء الفهارس واضحة وتجنّب المفاجآت.

dp = [[0] * n for _ in range(m)]

املأه بترتيب القراءة

كرّر على الصفوف ثم الأعمدة، من الأعلى إلى الأسفل ومن اليسار إلى اليمين. يضمن هذا الترتيب جاهزية كلا الجارين قبل استخدامهما.

for i in range(m):
    for j in range(n):
        ...

خلية الإجابة

بعد إكمال الملء، يوجد عدد المسارات في الخلية الأخيرة. تكون الإجابة هي dp[m-1][n-1]، أي الزاوية السفلية اليمنى.

answer = dp[m-1][n-1]

وفّر الذاكرة باستخدام صف واحد

يحتاج كل صف إلى الصف الذي يسبقه فقط، لذا يمكنك الاحتفاظ بـصف واحد وتحديثه في مكانه. وبذلك تنخفض الذاكرة إلى O(n).

row[j] += row[j-1]

الاختصار الرياضي

عند عدم وجود عوائق، تكون الإجابة معاملًا ثنائيًا: اختر الخطوات التي ستتجه إلى الأسفل من إجمالي الخطوات. تظل DP الخيار الأفضل عند ظهور العوائق.

تحقّق سريع

أنت تملأ dp[i][j] لخلية داخلية مفتوحة. ما الصيغة الصحيحة؟

مراجعة: عدّ المسارات

عرّف dp على أنه عدد المسارات إلى خلية، واضبط dp[0][0] على 1، ثم أضف قيمة الخلية التي فوقها إلى قيمة الخلية التي على يسارها. تحتوي الزاوية على الإجابة. 🧭

الأسئلة الشائعة

هل درس «عدّ المسارات على شبكة» مجاني؟

نعم — نص درس «عدّ المسارات على شبكة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Coding Interview Prep، انتقل إلى CoddyKit PRO. تتضمن دورة Coding Interview Prep 4 دروس في المجموع.

ماذا ستتعلم في «عدّ المسارات على شبكة»؟

جمع المسارات من زاوية إلى أخرى تتمرن على Coding Interview Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Coding Interview Prep؟

لا تُشترط خبرة سابقة. Coding Interview Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «عدّ المسارات على شبكة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Coding Interview Prep هذا؟

نعم. كل درس في Coding Interview Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. عدّ المسارات على شبكة
  2. أقل مجموع لمسار مع العوائق
  3. أطول تتابع مشترك
  4. مسافة التحرير خطوةً بخطوة
← العودة إلى Coding Interview Prep