乘积最大
简单题
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn=50; int n,k; long long f[maxn][7]; char s[maxn]; long long getcj(int i,int j) { long long sum=0; int k=j,x=1; while(k>=i) { sum+=x*(s[k]-'0'); k--; x=x*10; } return sum; } int main() { freopen("cjzd.in","r",stdin); freopen("cjzd.out","w",stdout); scanf("%d%d%s",&n,&k,s+1); int l=strlen(s+1); for(int i=1;i<=l;i++) f[i][0]=getcj(1,i);//设置边界的作用 for(int a=1;a<=k;a++) for(int i=a+1;i<=l;i++) for(int j=a;j<i;j++) f[i][a]=max(f[i][a],f[j][a-1]*getcj(j+1,i)); printf("%lld",f[l][k]); }