Menu
CoddyTech

Matrix Chain Multiplication

تُوصَف سلسلة من المصفوفات بواسطة dims: للمصفوفة i عدد صفوف يساوي dims[i] وعدد أعمدة يساوي dims[i+1]، لذا تلائم كل مصفوفة المصفوفة التالية. يتطلب ضرب مصفوفة أبعادها p × q في مصفوفة أبعادها q × r إجراء p × q × r عملية ضرب قياسية، وينتج مصفوفة أبعادها p × r. تؤدي كل طريقة لوضع الأقواس إلى الناتج النهائي نفسه، ولكن ليس بالتكلفة نفسها. أعدّ أقل عدد من عمليات الضرب القياسية اللازمة لضرب السلسلة بأكملها.

الدالة

matrixChainOrder(dims: integer-array) → integer
dimsinteger-array
الأحجام على طول السلسلة: المصفوفة i أبعادها dims[i] × dims[i+1]
تُرجعinteger
أقل عدد من عمليات الضرب القياسي اللازمة لضرب السلسلة بأكملها

القيود

  • 2 ≤ dims.length ≤ 100، لذا تتكوّن السلسلة من 1 إلى 99 مصفوفة.
  • 1 ≤ dims[i] ≤ 100
  • الإجابة لا تتجاوز 98 × 106، وهي ضمن نطاق الأعداد الصحيحة الموقّعة ذات 32 بت.

أمثلة

المدخلات
dims = [4, 10, 3, 12]
المخرجات
264
الشرح
يتطلب ضرب المصفوفتين الأوليين 4 × 10 × 3 = 120، وينتج عنه مصفوفة 4 × 3، وضربها في المصفوفة 3 × 12 يضيف 144: فيكون المجموع 264. أما الترتيب الآخر، فيتطلب 360 + 480 = 840.
challenge icon

سؤال إضافي

هل يمكنك أيضًا حساب عدد طرق وضع الأقواس المختلفة التي تحقق أقل تكلفة؟

إعادة ضبط الشيفرة
def matrixChainOrder(dims):
    # اكتب الكود هنا

اختبار #1

اختبار #2

اختبار #3

وسيط

dims = [4, 10, 3, 12]

الإخراج المتوقع

264