wrongnumber 2014-03-09 00:40:31
点我顶贴
收藏
删除
#include<iostream>
#include<cstdio>
using namespace std;
char s[64];
int k,n;
long long a[43][43],dp[32][42][42];
long long DP(int i,int l,int r)
{
if (i==0) return a[l][r];
if (l>=r) return 0;
if (dp[i][l][r]) return dp[i][l][r];
for (int q=l;q<r;q++)
dp[i][l][r]=max(dp[i][l][r],a[l][q]*DP(i-1,q+1,r));
return dp[i][l][r];
}
int main()
{
scanf("%d%d%s",&n,&k,&s);
for (int q=0;q<n;q++)
for (int p=q;p<n;p++)
a[q][p]=a[q][p-1]*10+s[p]-'0';
printf("%lld",DP(k,0,n-1));
//system("pause");
return 0;
}
代码