60分求助
查看原帖
60分求助
293104
wanghanyu22楼主2020/12/23 21:24

#求助!

#include <iostream>
#include <string>
#include <vector>
using namespace std;
int n,k;
char a[50];
long long num[50][50];
long long dp[50][50][10];
int main()
{
    cin>>n>>k>>a;
    for(int i=0;i<n;i++)
    {
        num[i][i]=a[i]-'0';
        dp[i][i][0]=num[i][i];
        for(int j=i+1;j<n;j++)
        {
            num[i][j]=num[i][j-1]*10+(a[j]-'0');
            dp[i][j][0]=num[i][j];
        }
    }
    for(int i=0;i<n;i++)
        for(int j=i+1;j<n;j++)
            for(int kk=1;kk<=k;kk++)
            {
                long long maxV=0;
                for(int m=i;m<=j;m++)
                    for(int left=0;left<=kk;left++)
                        if(dp[i][m][left]*dp[m+1][j][kk-left-1]>maxV)
                            maxV=dp[i][m][left]*dp[m+1][j][kk-left-1];
                dp[i][j][kk] = maxV;
            }
    cout<<dp[0][n-1][k];
    return 0;
}

##求帮助

2020/12/23 21:24
加载中...