tyvj 1047 乘积最大 N个数,K个乘号使得乘积最大
2010-09-24 21:43
309 查看
| |||
|
#include<cstdio>
#include<algorithm>
using namespace std;
int n,k;
__int64 mul[41][41],dp[41][8];
char a[42];
int main()
{
while(scanf("%d%d",&n,&k)==2)
{
scanf("%s",a+1);
for(int i=1;i<=n;i++)
{
for(int j=i;j<=n;j++)
{
__int64 cnt=0;
for(int k=i;k<=j;k++) cnt=cnt*10+a[k]-'0';
mul[i][j]=cnt;
}
}
for(int i=1;i<=n;i++) dp[i][0]=mul[1][i];
for(int j=1;j<=k;j++)
{
for(int i=j+1;i<=n;i++)
{
dp[i][j]=-1;
for(int k=j;k<i;k++)
{
dp[i][j]=max(dp[i][j],dp[k][j-1]*mul[k+1][i]);
}
}
}
printf("%I64d/n",dp
[k]);
}
return 0;
}
相关文章推荐
- 在一串数字中插入r个乘号,使得乘积最大
- 请在123456789中插入3个乘号使得乘积最大
- Tyvj 1047 乘积最大
- 对于1个正整数N,将其拆分成几个正整数的和,如何拆分可使得其乘积最大?
- n个学生站成一排 网易面试题之每个学生有一个能力值 牛牛想从n个学生中选出k名学生 要求相邻学生编号不超过d使得这k个学生乘积最大
- |Tyvj|NOIP2000|动态规划|P1047 乘积最大
- n个学生站成一排 网易面试题之每个学生有一个能力值 牛牛想从n个学生中选出k名学生 要求相邻学生编号不超过d使得这k个学生乘积最大
- n个学生站成一排 网易面试题之每个学生有一个能力值 牛牛想从n个学生中选出k名学生 要求相邻学生编号不超过d使得这k个学生乘积最大
- 正整数分解使得乘积最大问题
- n个学生站成一排 网易面试题之每个学生有一个能力值 牛牛想从n个学生中选出k名学生 要求相邻学生编号不超过d使得这k个学生乘积最大
- n个学生站成一排 网易面试题之每个学生有一个能力值 牛牛想从n个学生中选出k名学生 要求相邻学生编号不超过d使得这k个学生乘积最大
- 每天一道LeetCode-----在给定数组中找到一个子数组,使得这个子数组的元素乘积最大
- JAVA代码—算法基础:从n个数中取m个使得乘积最大?
- 【玲珑杯 1047】【二分匹配 KM算法或者费用流】Best couple【定义男女生的距离为最短距离,求匹配之后使得总距离最大】
- n个学生站成一排 网易面试题之每个学生有一个能力值 牛牛想从n个学生中选出k名学生 要求相邻学生编号不超过d使得这k个学生乘积最大
- TYVJ P1047 - 乘积最大(DP)
- TyvjP1047乘积最大
- n个数中取k个使得乘积最大(c++实现)
- 第一题:有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,你能返回最大的乘积吗?
- tyvj 1019 配对 给出2个序列A={a[1],a[2],…,a[n]},B={b[1],b[2],…,b[n]},从A、B中各选出n个元素进行一一配对(可以不按照原来在序列中的顺序),并使得所有配对元素差的绝对值之和最大。