#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
int a[16];
long long f[16][15];
int sum[16];
long long dfs(int n,int k)
{
if (f[n][k]>=0)
{
return f[n][k];
}
if (k>=n||k<0)
{
f[n][k]=0;
return f[n][k];
}
if (k==0||n==1)
{
f[n][k]=sum[n];
return f[n][k];
}
long long large=0;
for (int i=k;i<n;i++){
large=max(large,dfs(i,k-1)*(sum[n]-sum[i]));
}
f[n][k]=large;
return large;
}
int main()
{
int n,k; cin>>n>>k;
memset(f,-1,sizeof(f));
sum[0]=0;
for (int i=1;i<=n;i++){
cin>>a[i];
sum[i]=sum[i-1]+a[i];
}
cout<<dfs(n,k)<<endl;
return 0;
}
蓝桥杯 最大的算式
最新推荐文章于 2022-03-06 19:39:20 发布