2 条题解
-
0
#include<bits/stdc++.h> using namespace std; struct node{int l,r;}a[201]; int f[201][201]; int main() { int n;scanf("%d", &n); for(int i=1;i<=n;i++)scanf("%d", &a[i].l); for(int i=1;i<=n-1;i++)a[i].r=a[i+1].l; a[n].r=a[1].l; for(int i=1;i<=2*n;i++) a[i+n]=a[i]; for(int i=1;i<=2*n;i++) f[i][i]=0; for(int L=2;L<=n;L++) for(int st=1;st<=2*n-L+1;st++) { int ed=st+L-1; f[st][ed]=0; for(int k=st;k<ed;k++) f[st][ed]=max(f[st][ed], f[st][k]+f[k+1][ed]+a[st].l*a[k].r*a[ed].r); //+a[st].l*a[k+1].l*a[ed].r } int ans=0; for(int i=1;i<=n;i++)ans=max(ans, f[i][i+n-1]); printf("%d\n", ans); return 0; } -
0
#include<bits/stdc++.h> using namespace std; struct node{int l,r;}a[201]; int f[201][201]; int main() { int n;scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d",&a[i].l); for(int i=1;i<=n-1;i++)a[i].r=a[i+1].l; a[n].r=a[1].l; for(int i=1;i<=n;i++) a[i+n]=a[i]; for(int i=1;i<=2*n;i++) f[i][i]=0; for(int L=2;L<=n;L++) for(int st=1;st<=2*n-L+1;st++) { int ed=st+L-1; f[st][ed]=0; for(int k=st;k<ed;k++) f[st][ed]=max(f[st][ed],f[st][k]+f[k+1][ed]+a[st].l*a[k].r*a[ed].r); //+a[st].l*a[k+1].l*a[ed].r } int ans=0; for(int i=1;i<=n;i++)ans=max(ans,f[i][i+n-1]); printf("%d\n",ans); return 0; }
- 1
信息
- ID
- 1407
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- 2
- 标签
- 递交数
- 63
- 已通过
- 41
- 上传者