0
已解决
题目链接: 洛谷:P1018
rt,错误代码如下:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int INF = 0x3f3f3f3f;
int n,k;
ll dp[45][45][10];
char s[45];
ll calc(int l,int r)
{
ll cnt=1,ans=0;
for(int i=r;i>=l;i--)
{
ans+=cnt*(s[i]-'0');
cnt*=10;
}
return ans;
}
ll solve(int l,int r,int k)
{
if(!k) return dp[l][r][k]=calc(l,r);
if(dp[l][r][k]) return dp[l][r][k];
dp[l][r][k]=0;
for(int i=l;i<r;i++)
for(int j=0;j<k;j++)
{
if(i-l>=j&&r-(i+1)+1-1>=k-j-1)
dp[l][r][k]=max(dp[l][r][k],solve(l,i,j)*solve(i+1,r,k-j-1)),
dp[l][r][k]=max(dp[l][r][k],solve(l,i,k-j-1)*solve(i+1,r,j));
}
return dp[l][r][k];
}
int main()
{
scanf("%d%d",&n,&k);
scanf("%s",s+1);
printf("%lld",solve(1,n,k));
return 0;
}

