/* I HAVE ALLOCATED MEMORY STATICALLY FOR TESTING PURPOSES.
P[ ]={5,4,6,2,7}
means:
matrices of order 5 X 4 , 4 X 6 , 6 X 2 , 2 X 7
check http://w...content-available-to-author-only...t.hk/~dekai/271/notes/L12/L12.pdf
for the dry run and the detailed algorithm.
*/
#include<stdio.h>
int main()
{
int p[]={5,4,6,2,7};
int a[5][5];
int i,j,k,gap=1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
a[i][j]=30000;
for(gap=0;gap<5;gap++)
{
for(i=1,j=i+gap ; i<5 && j<5 ; i++,j++)
{
if(i==j) a[i][i]=0;
else
{
for(k=i;k<j;k++)
{
int val=a[i][k]+a[k+1][j] + p[i-1]*p[k]*p[j];
if(val<a[i][j])
{
a[i][j]=val;
}
}
}
}
}
for(i=1;i<5;i++)
{ for(j=1;j<5;j++)
{
if(a[i][j]==30000) printf("\tX");
else printf("\t %d",a[i][j]);
}
printf("\n") ;
}return 0;
}
CgovKiBJIEhBVkUgQUxMT0NBVEVEIE1FTU9SWSBTVEFUSUNBTExZIEZPUiBURVNUSU5HIFBVUlBPU0VTLgoKUFsgXT17NSw0LDYsMiw3fQoKbWVhbnM6CgptYXRyaWNlcyBvZiBvcmRlciA1IFggNCAsIDQgWCA2ICwgNiBYIDIgLCAyIFggNwoKY2hlY2sgaHR0cDovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnQuaGsvfmRla2FpLzI3MS9ub3Rlcy9MMTIvTDEyLnBkZgoKZm9yIHRoZSBkcnkgcnVuIGFuZCB0aGUgZGV0YWlsZWQgYWxnb3JpdGhtLgoKCiovCgoKI2luY2x1ZGU8c3RkaW8uaD4KCmludCBtYWluKCkKewogICAgICAgIGludCBwW109ezUsNCw2LDIsN307CiAgICAgICAgaW50IGFbNV1bNV07CgogICAgICAgIAoKICAgICAgICBpbnQgaSxqLGssZ2FwPTE7CgoKICAgICAgICBmb3IoaT0wO2k8NTtpKyspCiAgICAgICAgICAgICAgICBmb3Ioaj0wO2o8NTtqKyspCiAgICAgICAgICAgICAgICAgICAgICAgIGFbaV1bal09MzAwMDA7CgogICAgZm9yKGdhcD0wO2dhcDw1O2dhcCsrKQogICAgeyAgIAogICAgICAgICBmb3IoaT0xLGo9aStnYXAgOyBpPDUgJiYgajw1IDsgaSsrLGorKykKICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoaT09aikgYVtpXVtpXT0wOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGs9aTtrPGo7aysrKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFsPWFbaV1ba10rYVtrKzFdW2pdICsgcFtpLTFdKnBba10qcFtqXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbDxhW2ldW2pdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbaV1bal09dmFsOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgIH0KCiAgICAgICAgICB9CiAgICAgICAKICAgICB9CgogICAgIGZvcihpPTE7aTw1O2krKykKICAgICB7ICAgZm9yKGo9MTtqPDU7aisrKQogICAgICAgICB7ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgaWYoYVtpXVtqXT09MzAwMDApIHByaW50ZigiXHRYIik7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBwcmludGYoIlx0ICVkIixhW2ldW2pdKTsKCiAgICAgICAgICB9CiAgICAgICAgcHJpbnRmKCJcbiIpIDsKICAgICB9cmV0dXJuIDA7Cn0K