Help for this page
m[i,i] = 0 m[i,j] = min { m[i,k] + m[k+1,j] + p[i-1]*p[k]*p[j] } i<=k<j
use Memoize; use List::Util 'min'; ... return min map { m($i,$_) + m($_+1,$j) + $P[$i-1]*$P[$_]*$P[$j] } $i .. $j-1; }