乘积最大

来源:互联网 发布:linux解压rar文件命令 编辑:程序博客网 时间:2024/05/16 13:02
#include<iostream>using namespace std;int n,kk;long long s,sum[46][46],dp[46][6];int main(){cin>>n>>kk>>s;for(int i=n;i>=1;i--){sum[i][i]=s%10;s/=10;}for(int i=2;i<=n;i++)    for(int j=i-1;j>=1;j--)        sum[j][i]=sum[j][i-1]*10+sum[i][i];for(int i=1;i<=n;i++)dp[i][0]=sum[1][i];for(int k=1;k<=kk;k++)    for(int i=k+1;i<=n;i++)        for(int j=k;j<=i-1;j++)            dp[i][k]=max(dp[i][k],dp[j][k-1]*sum[j+1][i]);cout<<dp[n][kk]<<endl;return 0;}

(注:参考hzwer神犇程序)
2 0