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;
}

posted @ 2009-05-18 18:50  主函数  阅读(362)  评论(0编辑  收藏  举报