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

来源:互联网 发布:suse 软件源 编辑:程序博客网 时间:2024/05/29 00:29
#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[N][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;
}
原创粉丝点击