参考程序:
#include<bits/stdc++.h>
using namespace std;
int n;
int a[305];
int dp[305][305];//打掉ij之间所有靶子可以获得的最大积分(不含i,j)
int main() {cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}a[0]=1;a[n+1]=1;for(int i=n+1;i>=0;i--){for(int j=i+1;j<=n+1;j++){for(int k=i+1;k<j;k++){dp[i][j]=max(dp[i][j],dp[i][k]+dp[k][j]+a[k]*a[i]*a[j]);}}}cout<<dp[0][n+1];return 0;
}