您的位置:首页 > 其它

蓝桥杯 算法训练—— 最大乘积问题

2017-07-27 21:03 106 查看
#include<iostream>

using namespace std;

long long dp[50][50];

long num[50];

int N,K; 

int Cj(int m,int n)

{
int result=0;
for(int i=m;i<=n;i++)
result=result*10+num[i];
return result;

}

void Solve()

{
for(int i=1;i<=N;i++)
dp[i][0]=Cj(1,i);
for(int i=2;i<=N;i++)
{
for(int j=1;j<=K && j<i;j++)
{
for(int k=1;k<i;k++)
dp[i][j]=max(dp[i][j],dp[k][j-1]*Cj(k+1,i));
}
}
cout<<dp
[K];

}

int main()

{
long long Num,i=0;
cin>>N>>K;
cin>>Num;
while(Num>0)
{
num[N-i]=Num%10;
Num/=10;
i++;
}

Solve();
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: