▁= ▁MAX INT ; ▁▁▁▁▁▁▁▁▁▁▁▁ ▁for ▁( k ▁= ▁i ; ▁k ▁<= ▁j ▁- ▁ 1 ; ▁k ++) ▁{ ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ ▁cost ▁= ▁m [ i , ▁k ] ▁+ ▁m [ k + 1 , ▁j ] ▁+ ▁dim s [ i - 1 ]* dim s [ k ]* dim s [ j ]; ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ ▁if ▁( cost ▁< ▁m [ i , ▁j ]) ▁{ ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ ▁▁▁▁ ▁m [ i , ▁j ] ▁= ▁cost ; ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ ▁▁▁▁ ▁s [ i , ▁j ] ▁= ▁k ; ▁// ▁Index ▁of ▁the ▁sub sequence ▁split ▁that ▁achieved ▁minimal ▁cost ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ ▁} ▁▁▁▁▁▁▁▁▁▁▁▁ ▁} ▁▁▁▁▁▁▁▁ ▁} ▁▁▁▁ ▁} ▁} ▁Note ▁: ▁The ▁first ▁index ▁for ▁dim s ▁is ▁ 0 ▁and ▁the ▁first ▁index ▁for ▁m ▁and ▁s ▁is ▁ 1 . ▁ ▁A ▁Java ▁implementation ▁using ▁zero ▁based ▁array ▁indexes ▁along ▁with ▁a ▁convenience ▁method ▁for ▁printing ▁the ▁solved ▁order ▁of ▁operations : ▁public ▁class ▁Matrix Order Opt im ization ▁{ ▁▁▁▁ ▁protected ▁int [] [] m ; ▁▁▁▁ ▁protected ▁int [] [] s ; ▁▁▁▁ ▁public ▁void ▁matrix Chain Order ( int [] ▁dim s ) ▁{ ▁▁▁▁▁▁▁▁ ▁int ▁n ▁= ▁dim s . length ▁- ▁ 1 ; ▁▁▁▁▁▁▁▁ ▁m ▁= ▁new ▁int [ n ][ n ]; ▁▁▁▁▁▁▁▁ ▁s ▁= ▁new ▁int [ n ][ n ]; ▁▁▁▁▁▁▁▁▁ ▁for ▁( int ▁len Min us One ▁= ▁ 1 ; ▁len Min us One ▁< ▁n ; ▁len Min us One ++) ▁{ ▁▁▁▁▁▁▁▁▁▁▁▁ ▁for ▁( int ▁i