[2024年3月10日]第15届蓝桥杯青少组stema选拔赛C++中高级(第二子卷、编程题(6))
参考程序:
#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;
}