- 能量项链
- 2024-07-23 11:03:19 @
for(int i=n*2-1;i>=1;i--)
{
for(int j=i+1;j<2*n&&j-i<n;j++)
{
for(int k=i;k<=j-1;k++)
{
f[i][j]=max(f[i][j],f[i][k]+f[k+1][j]+a[i]*a[k+1]*a[j+1]);
}
s=max(s,f[i][j]);
}
}
for(int len=2;len<=n;len++)
{
for(int i=1;i<=2*n-1-len;i++)
{
int j=len+i-1;
for(int k=i;k<=j-1;k++)
{
f[i][j]=max(f[i][j],f[i][k]+f[k+1][j]+a[i]*a[k+1]*a[j+1]);
}
s=max(s,f[i][j]);
}
}
1 条评论
-
liweiergg LV 4 @ 2024-07-23 11:07:50
#include <queue> #include <cmath> #include <cctype> #include <vector> #include <cstdio> #include <cstring> #include <cstdlib> #include <iomanip> #include <iostream> #include <algorithm> using namespace std; int a[201]; int f[201][201]; int main() { int n,s=0; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); a[n+i]=a[i]; } for(int i=n*2-1;i>=1;i--) { for(int j=i+1;j<2*n&&j-i<n;j++) { for(int k=i;k<=j-1;k++) { f[i][j]=max(f[i][j],f[i][k]+f[k+1][j]+a[i]*a[k+1]*a[j+1]); } s=max(s,f[i][j]); } } printf("%d",s); return 0; }
还有他这篇题解中的f[i][j]=max(f[i][j],f[i][k]+f[k+1][j]+a[i]*a[k+1]*a[j+1]);
要怎么理解呢?
- 1