HEU 8002 Multiplication Puzzle
/**************************************
Problem: HEU 8002 Multiplication Puzzle
Time: 0.0520 s
Memory: 576 k
Accepted Time: 2009-05-18 18:47:28
Tips: DP
**************************************/
#include <stdio.h>
#include <string.h>
int main()
{
int table[109][109],a[109],n,i,j,k;
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++)scanf("%d",&a[i]);
memset(table,0,sizeof(table));
for(k=2;k<=n;k++)//步长从2到n
{
for(i=1;i+k<=n;i++)
{
if(k==2)
{
table[i][i+k]=a[i]*a[i+1]*a[i+2];
}
else
{
for(j=i+1;j<i+k;j++)
{
int temp=table[i][j]+a[i]*a[j]*a[i+k]+table[j][i+k];
if(j==i+1||temp<table[i][i+k])table[i][i+k]=temp;
}
}
}
}
printf("%d\n",table[1][n]);
}
return 0;
}
Problem: HEU 8002 Multiplication Puzzle
Time: 0.0520 s
Memory: 576 k
Accepted Time: 2009-05-18 18:47:28
Tips: DP
**************************************/
#include <stdio.h>
#include <string.h>
int main()
{
int table[109][109],a[109],n,i,j,k;
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++)scanf("%d",&a[i]);
memset(table,0,sizeof(table));
for(k=2;k<=n;k++)//步长从2到n
{
for(i=1;i+k<=n;i++)
{
if(k==2)
{
table[i][i+k]=a[i]*a[i+1]*a[i+2];
}
else
{
for(j=i+1;j<i+k;j++)
{
int temp=table[i][j]+a[i]*a[j]*a[i+k]+table[j][i+k];
if(j==i+1||temp<table[i][i+k])table[i][i+k]=temp;
}
}
}
}
printf("%d\n",table[1][n]);
}
return 0;
}