/*
作者:桦清_L
*/
#include <iostream>
#include <string.h>
#include <string>
#include <math.h>
using namespace std;
long long int sum[41][41];
long long int dp[41][41]; //dp[i][j]=前i个数有j个乘号的最大值
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
char a;
cin>>a;
for(int j=1;j<=i;j++)
for(int k=i;k<=n;k++)
{
double b=(a-'0')*pow(10,k-i);
sum[j][k]+=(int)b;
}
}
for(int i=1;i<=n;i++) dp[i][0]=sum[1][i]; //不存在乘号时
for(int i=2;i<=n;i++) //当前区间
for(int j=1;j<=m;j++) //乘号数
for(int k=1;k<i;k++) dp[i][j]=max(dp[i][j],dp[k][j-1]*sum[k+1][i]);
cout<<dp[n][m]<<endl;
return 0;
}
code[vs] 1017乘积最大
最新推荐文章于 2023-05-18 15:39:54 发布