乘积最大【动态规划】
链接:https://ac.nowcoder.com/acm/contest/1071/A
来源:牛客网
题目描述
今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目:
设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大。
同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子:
有一个数字串:312, 当N=3,K=1时会有以下两种分法:
1) 3*12=36
2) 31*2=62
这时,符合题目要求的结果是:31*2=62
现在,请你帮助你的好朋友XZ设计一个程序,求得正确的答案。
输入描述:
第一行共有2个自然数N,K(6 ≤ N ≤ 40,1 ≤ K ≤ 6)
第二行是一个长度为N的数字串。
输出描述:
输出所求得的最大乘积(一个自然数)。
示例1
输入
复制
4 2
1231
输出
复制
62
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{int n,k,i,j;char str[41];cin>>n>>k;cin>>str;int dp[41][7];memset(dp,0,sizeof(dp));//dp元素初始化为0int num[41][41];for(i=0;i<n;i++)//字符串转换为数字 {int tem=0;for(j=i;j<n;j++){tem=tem*10+str[j]-'0';num[i][j]=tem;}} for(i=0;i<n;i++)dp[i][0]=num[0][i];//当不插入乘号时,最大乘积为其本身 //动态转移方程,更新解for(i=0;i<n;i++)for(j=1;j<=k;j++)for(k=0;k<i;k++)dp[i][j]=max(dp[k][j-1]*num[k+1][i],dp[i][j]);cout<<dp[n-1][k]<<endl;return 0;
}
乘积最大【动态规划】相关推荐
- 最大k乘积问题---动态规划实验1
问题描述 设I是一个n位十进制整数.如果将I划分为k段,则可得到k个整数.这k个整数的乘积称为I的一个k乘积.试设计一个算法,对于给定的I和k,求出I的最大k乘积. 例如 十进制整数 1234 划分为 ...
- 最大k乘积问题--动态规划
问题 问题描述: 设x是一个n位十进制整数.如果将x划分为k段,则可得到k个整数.这k个整数的乘积称为x的一个k乘积.试设计一个算法,对于给定的x和k,求出x的最大k乘积. 编程任务: 对于给定的x和 ...
- 蓝桥杯 算法训练 乘积最大(动态规划)
问题描述 今年是国际数学联盟确定的"2000--世界数学年",又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一 ...
- 最大k乘积问题----动态规划
问题 设I是一个n位十进制整数.如果将I划分为k段,则可得到k个整数.这k个整数的乘积称为I的一个k乘积.试设计一个算法,对于给定的I和k,求出I的最大k乘积. 编程任务: 对于给定的I 和k,编程计 ...
- Python算法:动态规划
本节主要结合一些经典的动规问题介绍动态规划的备忘录法和迭代法这两种实现方式,并对这两种方式进行对比 [这篇文章实际写作时间在这个系列文章之前,所以写作风格可能略有不同,嘿嘿] 大家都知道,动态规划算法 ...
- 动态规划(以合唱团为例)
比较容易理解的动态规划:http://blog.csdn.net/woshioosm/article/details/7438834 关于金子问题的部分选段: 子问题: 国王需要根据两个大臣的答案以及 ...
- CSP-J (NOIP普及组) 历年复赛真题考察内容(1998~2021)
TZOJ题目分类 本博客原文地址:https://www.cnblogs.com/BobHuang/p/14522022.html 其中,1.较简单题26题左右:2.动态规划17题,其中9题较好做:3 ...
- 动态规划经典例题:乘积最大连续子数组
题目: 输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值.例如数组:arr[]={1, 2, 3, -2, 4, -3 ...
- 动态规划|最大k乘积问题(C语言)
题目: [分析] 先通过若干个简单例子来观察规律,摸索思路.例如十进制整数 1234 划分为 3 段可有如下情形: 1 × 2 × 34 = 68 1 × 23 × 4 = 92 12 × 3 × 4 ...
- [蓝桥杯][算法训练VIP]乘积最大(动态规划)
题目描述 今年是国际数学联盟确定的"2000--世界数学年",又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一 ...
最新文章
- PRML-github code使用两个小攻略
- MATLAB从入门到精通系列之MATLAB维度获取size()函数详解
- 公告牌为什么有些是纸质,有些是电子的
- ServiceMesh最火项目:Istio架构解析
- 三星Galaxy S22系列可能会延迟发售:原因可能还是它!
- .net 下载文件几种方式
- CCF201503试题
- SQL错误Duplicate column name 'NAME'名字重复应使用别名
- 程序员应知——我们不是客户
- 计算机二级vfp表格应用,计算机二级VFP辅导:VFP表的关联
- 一加nfc门禁卡录入_Card Emulator(NFC卡模拟):一加5NFC模拟门禁卡|饭卡|电梯卡 工卡 借书卡...
- 服务器总线协议_第一章----I2C总线协议入门
- MVC和MVVM框架模式
- 2022年全球程序员平均薪资发布,中国排名很意外
- H3CV7交换机WEB登录设备方法
- 2023年最新微信记账小程序源码+简约大气
- BiomaRt 将小鼠的ENTREZID转化为人类的ENTREZID(同源ENTREZID转换)
- 可行性研究报告计算机,计算机软件设计师:软件可行性研究报告[1]
- kalilinux-arpspoof-arp攻击
- VB循环结构之For Each...Next详解