1 条题解
-
0
C++ :
#include<iostream> #include<algorithm> using namespace std; const int N = 105; int f[N][N]={0},a[N]; int main(){ int n; cin>>n; for (int i=0;i<n;i++) cin>>a[i]; for (int k=2;k<=n;k++) for (int i=0;i<n;i++) for (int j=1;j<k;j++) f[k][i]=max(f[k][i],f[j][i]+f[k-j][(i+j)%n] +a[i]*a[(i+j)%n]*a[(i+k)%n]); int ans=0; for (int i=0;i<n;i++) ans=max(ans,f[n][i]); cout<<ans<<endl; return 0; }
Pascal :
var n,i,j,k:longint; max:int64; a:array[-10..maxint] of int64; f:array[1..1000,1..1000] of int64; begin {assign(input,'energy.in'); reset(input); assign(output,'energy.out'); rewrite(output);} readln(n); for i:=1 to n do begin read(a[i]); a[n+i]:=a[i]; end; for i:=2*n-1 downto 1 do for j:=i+1 to 2*n do for k:=i to j-1 do if f[i,k]+f[k+1,j]+a[i]*a[k+1]*a[j+1]>f[i,j] then begin f[i,j]:=f[i,k]+f[k+1,j]+a[i]*a[k+1]*a[j+1] ; if f[i,j]>max then max:=f[i,j]; end; writeln(max div 2); {close(input); close(output);} end.
- 1
信息
- ID
- 817
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者