حقيبة الظهر

حقيبة الظهر

متوسط

مقدمة

لهاكبا مرشدة جبال وحمّالة من شيربا. بعد شهور من التخطيط الدقيق، توشك البعثة التي تعمل لها لهاكبا على المغادرة. ستتقاضى قيمة ما حملته إلى معسكر القاعدة.

أمامها أغراض كثيرة، لكل منها قيمة ووزن. كانت لهاكبا ستأخذ كل الأغراض عن طيب خاطر، لكن حقيبة ظهرها لا تتسع إلا لوزن محدود.

التعليمات

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

ستُمثَّل العناصر كمصفوفة من العناصر. سيكون لكل عنصر وزن وقيمة. ستكون جميع القيم المعطاة موجبة قطعًا. لا تستطيع Lhakpa أخذ أكثر من واحدة من كل عنصر.

على سبيل المثال:

Items: [
  { "weight": 5, "value": 10 },
  { "weight": 4, "value": 40 },
  { "weight": 6, "value": 30 },
  { "weight": 4, "value": 50 }
]

Knapsack Maximum Weight: 10

في المثال أعلاه، وزن العنصر الأول 5 وقيمته 10، ووزن العنصر الثاني 4 وقيمته 40، وهكذا. في هذا المثال، ينبغي لـ Lhakpa أن تأخذ العنصرين الثاني والرابع لتعظيم قيمتها، وهي في هذه الحالة 90. لا يمكنها الحصول على أكثر من 90 لأن حقيبة الظهر لديها حد للوزن مقداره 10.


المصدر

ويكيبيديايفتح الرابط في نافذة أو علامة تبويب جديدة
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
ReasonML Exercism

مستعد لبدء حقيبة الظهر؟

سجّل في Exercism لتتعلّم وتتقن ReasonML عبر 31 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.