MattL • 2年前
要求加入spj
#include<bits/stdc++.h>
using namespace std;
int a[33],f[33][33],n,cnt,b[33][33];
void qp(int l,int r)
{
if(l==r)
{
cout<<l<<' ';
return ;
}
if(l>r)return ;
cout<<b[l][r]<<' ';
qp(l,b[l][r]-1);
qp(b[l][r]+1,r);
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
for(int o=1;o<=n;o++)
f[i][o]=1;
for(int i=1;i<=n;i++)
{
cin>>a[i];
f[i][i]=a[i];
}
for(int l=n;l>=1;l--)
for(int r=l+1;r<=n;r++)
for(int i=l;i<=r;i++)
if(f[l][i-1]*f[i+1][r]+a[i]>f[l][r])
b[l][r]=i,f[l][r]=f[l][i-1]*f[i+1][r]+a[i];
cout<<f[1][n]<<endl;
qp(1,n);
cout<<endl;
return 0;
}
洛谷AC,magicoj第2个样例就错了
Comments: