0Pricing
Coding Interview Prep · درس

توليد جميع المجموعات الجزئية

اختيار كل عنصر أو تخطيه

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

لماذا نولّد المجموعات الجزئية

تطلب منكم كثير من مسائل المسابقات تجربة كل مجموعة جزئية من مجموعة صغيرة. وباستخدام الاستدعاء الذاتي، يمكنكم سردها جميعًا بطريقة واضحة وموثوقة. 🧩

اختاروا كل عنصر أو تخطّوه

الفكرة الأساسية: تتخذون لكل عنصر اختيارًا ثنائيًا، فإما تضمونه أو تتركونه. وكل مجموعة كاملة من الاختيارات تعطي مجموعة جزئية واحدة.

كم عدد المجموعات الجزئية الموجودة

تملك مجموعة مكوّنة من n عناصر بالضبط 2 أس n من المجموعات الجزئية، لأن كل عنصر يضاعف العدد. لذلك حافظوا على صغر n، في حدود 20 أو أقل.

الخطة ذاتية الاستدعاء

مرّروا فهرسًا عبر المصفوفة. وعند كل فهرس، تفرّعوا مرتين: مرةً بأخذ العنصر، ومرةً بتخطّيه.

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

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

الاستدعاء الذاتي للمجموعات الجزئية في التعليمات البرمجية

يسجل هذا الاجتياز بالاستدعاء الذاتي مجموعةً جزئيةً عند النهاية، ثم يستكشف خيارَي التخطي والأخذ من كل فهرس.

def gen(i, cur):
    if i == len(a):
        out.append(cur[:])
        return
    gen(i + 1, cur)
    gen(i + 1, cur + [a[i]])

تراجعوا بإلغاء التغييرات

عند إضافة عنصر، أزيلوه بعد الاستدعاء الذاتي حتى يبدأ الفرع التالي بحالة نظيفة. وتلك الخطوة العكسية هي جوهر التراجع.

cur.append(a[i])
gen(i + 1, cur)
cur.pop()

البديل باستخدام قناع البتات

يمكنكم أيضًا ربط كل عدد صحيح من 0 إلى 2 أس n ناقص 1 بمجموعة جزئية، بحيث يحدد كل بت عنصرًا مُضمّنًا.

for mask in range(1 << n):
    sub = [a[i] for i in range(n) if mask >> i & 1]

انسخوا قبل التخزين

خزّنوا دائمًا نسخة من القائمة الحالية، لا القائمة نفسها. وإلا فستستبدل التغييرات اللاحقة كل مجموعة جزئية حفظتموها. ⚠️

توليد التوافيق

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

أين تظهر المجموعات الجزئية

يحل تعداد المجموعات الجزئية مسائل حقيبة الظهر الصغيرة، واختيار الفرق، وفحوص إمكانية الحل التي يجب فيها اختبار كل اختيار ممكن.

تحقق سريع

كم مجموعةً جزئيةً تملك مجموعة مكوّنة من n عناصر؟

مراجعة: تفرّعوا عند كل عنصر

تعلّمتم سرد جميع المجموعات الجزئية باختيار كل عنصر أو تخطّيه، ثم إلغاء التغيير بعد كل فرع. حافظوا على صغر n، لأن العدد يساوي 2 أس n. 🎯

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

هل درس «توليد جميع المجموعات الجزئية» مجاني؟

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

ماذا ستتعلم في «توليد جميع المجموعات الجزئية»؟

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

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

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

كم من الوقت يستغرق درس «توليد جميع المجموعات الجزئية»؟

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

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

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

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

  1. التفكير递归يًا: الحالة الأساسية والاستدعاء递归ي
  2. توليد جميع المجموعات الجزئية
  3. التباديل وفكرة N-Queens
  4. التقليم للنجاة من الحد الزمني
← العودة إلى Coding Interview Prep