代码改变世界

Sicily/1345. 能量项链

2011-08-15 18:24  Min·zc  阅读(493)  评论(0编辑  收藏  举报
 1 #include <iostream>
 2 #include <memory.h>
 3 using namespace std;
 4 int num[300];
 5 long ans[310][310];
 6 int main()
 7 {
 8         int n;
 9         while(cin>>n)
10         {
11                 for(int i=1;i<=n;i++)
12                 {
13                         cin>>num[i];
14                         num[i+n]=num[i];
15                 }
16                 memset(ans,0,sizeof(ans));
17                 for(int k=2;k<=n;k++)
18                         for(int i=1;i<=2*n;i++) //之前写的n,结果wa了很多次,后来发现需要计算到2n才可以,否则当j+1>n时的num值就是没有计算过的,所以得出的结果就是错误的
19                         {
20                                 int t=i+k-1;
21                                 for(int j=i;j<t;j++)
22                                         if(ans[i][t]<ans[i][j]+ans[j+1][t]+num[i]*num[j+1]*num[t+1])
23                                                 ans[i][t]=ans[i][j]+ans[j+1][t]+num[i]*num[j+1]*num[t+1];
24                         }
25                 int final=0;
26                 for(int i=1;i<=n;i++)
27                         if(final<ans[i][i+n-1])
28                                 final=ans[i][i+n-1];
29                 cout<<final<<endl;
30 
31         }
32 }