蓝桥杯 算法训练—— 最大乘积问题
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;
}
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;
}
相关文章推荐
- 蓝桥杯 算法训练 乘积最大 By Assassin [dp水题]
- 【动态规划】最大k乘积问题
- 子序列的最大乘积问题
- 最大子串乘积问题
- 蓝桥杯 算法训练 王、后传说 八皇后问题 - - 有点水
- 动态规划之最大k乘积,编辑距离,k好数,节点选择,背包问题
- 1209 -- 乘积最大问题
- 蓝桥杯 算法训练 乘积最大
- 最大K乘积问题
- 微软面试题---求子数组最大乘积问题
- 【dp】最大k乘积问题
- 蓝桥杯 算法提高 算法提高 最大乘积
- FZU_1208_最大k乘积问题
- C语言使用DP动态规划思想解最大K乘积与乘积最大问题
- 乘积最大问题
- 【开放 5月18日 发布】:子数组的最大乘积问题_____问题简单,请思考如何逐步降低时间复杂度,跟帖回复,群内讨论.
- 整数拆分并且乘积最大问题
- 算法训练 乘积最大
- MOOC清华《程序设计基础》第6章第3题:最大乘积问题(动态规划)
- 蓝桥杯 算法训练 Anagrams问题