Menu
CoddyTech

Matrix Chain Multiplication

Rangkaian matriks dijelaskan oleh dims: matriks i memiliki dims[i] baris dan dims[i+1] kolom, sehingga setiap matriks cocok dikalikan dengan matriks berikutnya. Mengalikan matriks p × q dengan matriks q × r memerlukan p × q × r perkalian skalar dan menghasilkan matriks p × r. Setiap cara menempatkan tanda kurung menghasilkan hasil kali akhir yang sama, tetapi biayanya berbeda. Kembalikan jumlah perkalian skalar paling sedikit yang diperlukan untuk mengalikan seluruh rangkaian.

Fungsi

matrixChainOrder(dims: integer-array) → integer
dimsinteger-array
ukuran sepanjang rantai: matriks i berukuran dims[i] × dims[i+1]
Mengembalikaninteger
jumlah perkalian skalar paling sedikit untuk mengalikan seluruh rantai

Batasan

  • 2 ≤ dims.length ≤ 100, jadi rantai tersebut terdiri dari 1 hingga 99 matriks.
  • 1 ≤ dims[i] ≤ 100
  • Jawabannya paling banyak 98 × 106, jauh di dalam rentang bilangan bulat bertanda 32-bit.

Contoh

Input
dims = [4, 10, 3, 12]
Output
264
Penjelasan
Mengalikan dua biaya pertama menghasilkan 4 × 10 × 3 = 120 dan menyisakan matriks 4 × 3, yang dikalikan dengan matriks 3 × 12 menambah biaya sebesar 144: totalnya 264. Urutan lainnya membutuhkan biaya 360 + 480 = 840.
challenge icon

Pertanyaan lanjutan

Bisakah kamu juga menghitung berapa banyak tanda kurung yang berbeda yang menghasilkan biaya minimum?

Reset kode
def matrixChainOrder(dims):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

dims = [4, 10, 3, 12]

Output yang diharapkan

264