Thách thức này là tính toán thứ tự nhân hiệu quả nhất cho một sản phẩm của một số ma trận.
Kích thước của ma trận được chỉ định trên một dòng đầu vào tiêu chuẩn. Bạn nên in ra đầu ra tiêu chuẩn một danh sách các số nguyên cho biết thứ tự thực hiện phép nhân để giảm thiểu tổng chi phí nhân.
ví dụ 1
đầu vào
5x6 6x12 12x100 100x7
đầu ra
3 2 1
Dòng đầu vào sẽ là một danh sách các kích thước ma trận được phân tách bằng dấu cách, mỗi kích thước là số lượng hàng, theo sau là một x
, theo sau là số cột. Ví dụ, có 4 ma trận để nhân với nhau (vì vậy tổng 3 phép nhân) và vì phép nhân ma trận là kết hợp nên chúng có thể được thực hiện theo bất kỳ thứ tự nào.
Đầu ra phải là thứ tự thực hiện các phép nhân để giảm thiểu tổng chi phí. Đây phải là một danh sách các số nguyên được phân tách bằng dấu cách biểu thị chỉ số của phép nhân để thực hiện tiếp theo. Đối với ma trận N, danh sách này phải chứa các số từ 1 đến N-1. Ví dụ 1, đầu ra 3 2 1
có nghĩa là bạn nên thực hiện 12x100 * 100x7
phép nhân trước, sau đó là 6x12 * 12x7
phép nhân (ma trận thứ hai nhân với kết quả của bước trước đó), sau đó cuối cùng là 5x6 * 6x7
phép nhân.
Các phép nhân ma trận sẽ luôn luôn tương thích, tức là số lượng cột của ma trận sẽ khớp với số lượng hàng của ma trận tiếp theo. Giả sử chi phí nhân hai ma trận AxB * BxC
là A*B*C
.
Mã của bạn phải xử lý danh sách lên tới 100 ma trận, mỗi kích thước lên tới 999 và thực hiện trong thời gian hợp lý.
ví dụ 2
đầu vào
5x10 10x5 5x15 15x5
đầu ra
1 3 2
hoặc là
3 1 2
ví dụ 3
đầu vào
22x11 11x78 78x123 123x666 666x35 35x97 97x111 111x20 20x50
đầu ra
2 3 4 5 6 7 8 1
Lưu ý: để xác minh, tổng chi phí tốt nhất cho ba ví dụ là 9114, 750 và 1466344.
Mã ngắn nhất sẽ thắng!