能量项链(环形处理)
算法:动态规划
#include<iostream> #include<algorithm> using namespace std; const int N=210; int a[N],f[2*N][2*N]; int main(void){ int n,maxl=-1; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; a[n+i]=a[i]; } for(int i=2;i<=n;i++) for(int j=1;j<=2*n-i+1;j++){ int l=j,r=j+i-1; for(int k=l;k<r;k++){ f[l][r]=max(f[l][r],f[l][k]+f[k+1][r]+a[l]*a[k+1]*a[r+1]); maxl=max(f[l][r],maxl); } } cout<<maxl<<endl; return 0; }