Tantangan ini adalah untuk menghitung urutan penggandaan yang paling efisien untuk produk dari beberapa matriks.
Ukuran matriks ditentukan pada satu baris input standar. Anda harus mencetak ke output standar daftar bilangan bulat yang menunjukkan urutan untuk melakukan perkalian untuk meminimalkan total biaya perkalian.
Contoh 1
memasukkan
5x6 6x12 12x100 100x7
keluaran
3 2 1
Baris input akan menjadi daftar ukuran matriks yang dipisahkan oleh ruang, yang masing-masing adalah jumlah baris, diikuti oleh x, diikuti oleh jumlah kolom. Sebagai contoh, ada 4 matriks untuk dikalikan bersama (jadi 3 total perkalian), dan karena perkalian matriks adalah asosiatif mereka dapat dilakukan dalam urutan apa pun.
Keluaran harus berupa urutan untuk melakukan perkalian guna meminimalkan total biaya. Ini harus berupa daftar bilangan bulat yang dipisahkan spasi yang mewakili indeks perkalian untuk dilakukan selanjutnya. Untuk matriks N, daftar ini harus berisi angka 1 hingga N-1, inklusif. Misalnya 1, output 3 2 1berarti Anda harus melakukan 12x100 * 100x7perkalian terlebih dahulu, lalu 6x12 * 12x7perkalian (matriks kedua kali hasil dari langkah sebelumnya), kemudian akhirnya hasil 5x6 * 6x7perkalian.
Penggandaan matriks akan selalu kompatibel, yaitu jumlah kolom dari suatu matriks akan cocok dengan jumlah baris dari matriks berikutnya. Anggap biaya mengalikan dua matriks AxB * BxCadalah A*B*C.
Kode Anda harus menangani daftar hingga 100 matriks, masing-masing dimensi hingga 999, dan melakukannya dalam waktu yang wajar.
contoh 2
memasukkan
5x10 10x5 5x15 15x5
keluaran
1 3 2
atau
3 1 2
contoh 3
memasukkan
22x11 11x78 78x123 123x666 666x35 35x97 97x111 111x20 20x50
keluaran
2 3 4 5 6 7 8 1
Catatan: untuk verifikasi, total biaya terbaik untuk tiga contoh adalah 9114, 750, dan 1466344.
Kode terpendek menang!