Menu
CoddyTech

Matrix Chain Multiplication

Một chuỗi ma trận được mô tả bằng dims: ma trận i có dims[i] hàng và dims[i+1] cột, nên mỗi ma trận có kích thước phù hợp với ma trận tiếp theo. Nhân ma trận p × q với ma trận q × r cần p × q × r phép nhân vô hướng và cho ra ma trận p × r. Mọi cách đặt dấu ngoặc đều cho cùng một tích cuối cùng, nhưng không có cùng chi phí. Hãy trả về số phép nhân vô hướng ít nhất cần thiết để nhân toàn bộ chuỗi.

Hàm

matrixChainOrder(dims: integer-array) → integer
dimsinteger-array
kích thước dọc theo chuỗi: ma trận i có kích thước dims[i] × dims[i+1]
Trả vềinteger
số phép nhân vô hướng ít nhất để nhân toàn bộ chuỗi

Ràng buộc

  • 2 ≤ dims.length ≤ 100, vì vậy chuỗi này gồm từ 1 đến 99 ma trận.
  • 1 ≤ dims[i] ≤ 100
  • Đáp án tối đa là 98 × 106, nằm gọn trong giới hạn của số nguyên có dấu 32 bit.

Ví dụ

Đầu vào
dims = [4, 10, 3, 12]
Đầu ra
264
Giải thích
Nhân hai ma trận đầu tiên tốn 4 × 10 × 3 = 120 và cho ra một ma trận 4 × 3. Nhân ma trận này với ma trận 3 × 12 tốn thêm 144, tổng cộng là 264. Thứ tự còn lại tốn 360 + 480 = 840.
challenge icon

Câu hỏi mở rộng

Bạn cũng có thể đếm số cách đặt dấu ngoặc khác nhau để đạt chi phí tối thiểu không?

Đặt lại code
def matrixChainOrder(dims):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

dims = [4, 10, 3, 12]

Đầu ra mong đợi

264