乘积最大

简单题

#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]);
 }

 

posted @ 2017-07-04 17:16  xinyimama  阅读(81)  评论(0编辑  收藏  举报