要下课了,明天补上详细的注释
#include<iostream> #include<cmath> #include<cstdio> #include<cstring> using namespace std; int n,m; int f[2010][2010]; int a[100860]; int finalans=-1; void bj(int x) { finalans=max(finalans,x); //刷新最大值 } int main() { int i,j; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&a[i]); } for(i=1;i<=n;i++) for(j=0;j<=i;j++) { f[i][j]=max(f[i-1][j-1]+i*a[j],f[i-1][j]+i*a[n-i+j+1]); //f[i][j]指的是从 } for(i=1;i<=n;i++) { bj(f[n][i]); } printf("%d",finalans); return 0; }