乘积最大&蓝桥杯最大的算式 动态规划 递推

动态规划---最大的算式 问题描述  题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大。因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号。例如:  N=5,K=2,5个数字分别为1、2、3、4、5,可以加成:  1*2*(3+4+5)=24  1*(2+3)*(4+5)=45  (1*2+3)*(4+5)=45  ……输入格式  输... 阅读详情

(1)乘积最大

今年是国际数学联盟确定的“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设计一个程序,求得正确的答案。

输入描述 Input Description

   程序的输入共有两行:

   第一行共有2个自然数N,K(6≤N≤40,1≤K≤6)

   第二行是一个长度为N的数字串。

输出描述 Output Description

   结果显示在屏幕上,相对于输入,应输出所求得的最大乘积(一个自然数)。

样例输入 Sample Input

4  2

1231

样例输出 Sample Output

62

初步分析与01背包问题类似采用动态规划递推的方式计算。用d[i][j]表示在给出数字串中前j个数中加入i个乘号的最大乘积。则有d[i][j]=max(d[i][j],d[i-1][k]*num);num表示从第k个数开始到第j个数表示的数字,此处需要枚举k值并计算相应的num。

当能填入0个乘号时需要独立计算我有点贪强行放在了一块反而麻烦!

#include<stdio.h>
#include<string.h>
#define MAX 40
long long max(long long a,long long b);
char nustr[MAX];
long long dp[7][40];
int main()
{
	int n,k,i,j,m,l;
	long long num=0;
	scanf("%d %d %s",&n,&k,nustr);	
	for(i=0;i<=k;i++) //初始化dp数组为乘法运算需初始化为1
		for(j=0;j<n;j++)
			dp[i][j]=1;
	dp[0][0]=nustr[0]-'0';
	for(i=0;i<=k;i++)
	{
		for(j=i;j<n;j++)
		{
			for(m=i?i-1:0;m<j;m++)  //对应上方枚举k
			{
				for(num=0,l=i?m+1:0;l<=j;l++) //计算num
				{
					num=num*10+nustr[l]-'0';
				}
				if(!i)	dp[i][j]=max(num,dp[i][j]); //当能填入乘号数为0
				else dp[i][j]=max(dp[i][j],dp[i-1][m]*num);
			}
			
		}
	}
	printf("%lld",dp[k][n-1]);
	return 0;
}
long long max(long long a,long long b)
{
	return a>b?a:b;
}


  算法训练 最大的算式  
时间限制:1.0s   内存限制:256.0MB
    
问题描述
  题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大。因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号。例如:
  N=5,K=2,5个数字分别为1、2、3、4、5,可以加成:
  1*2*(3+4+5)=24
  1*(2+3)*(4+5)=45
  (1*2+3)*(4+5)=45
  ……
输入格式
  输入文件共有二行,第一行为两个有空格隔开的整数,表示N和K,其中(2<=N<=15, 0<=K<=N-1)。第二行为 N个用空格隔开的数字(每个数字在0到9之间)。
输出格式
  输出文件仅一行包含一个整数,表示要求的最大的结果
样例输入
5 2
1 2 3 4 5
样例输出
120
样例说明
  (1+2+3)*4*5=120
两个题唯一不同在于数字串被分开后进行了加法运算(数据读入也可以更改)
#include<stdio.h>
#include<string.h>
#define MAX 15
long long max(long long a,long long b);
char nustr[MAX];
long long dp[15][15];
int main()
{
	int n,k,i,j,m,l;
	long long num=0;
	scanf("%d %d",&n,&k);
	for(i=0;i<n;i++)
		scanf(" %c",&nustr[i]);	
	memset(dp,0,sizeof(dp)); //对于本题初始化为0
	dp[0][0]=nustr[0]-'0';
	for(i=0;i<=k;i++)
		for(j=i;j<n;j++)
			for(m=i?i-1:0;m<j;m++)
			{
				for(num=0,l=i?m+1:0;l<=j;l++)
				{
					num=num+(nustr[l]-'0'); //将相乘改为相加
				}
				if(!i)	dp[i][j]=max(num,dp[i][j]);
				else dp[i][j]=max(dp[i][j],dp[i-1][m]*num);
			}
	printf("%I64d",dp[k][n-1]); //应采用该格式输出
	return 0;
}
long long max(long long a,long long b)
{
	return a>b?a:b;
}


        
洛谷NOIP刷题-P1018 乘积最大 题目描述 今年是国际数学联盟确定的“20002000――世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰9090周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZXZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目: 设有一个长度为NN的数字串,要求选手使用KK个乘号将它分成K+1K+1个部分,找出一种分法,使得这K+1K+1个部分的乘积... 阅读详情

相关推荐

蓝桥杯省赛C++A组B组题解整理(第十、九、八、七、六、五、四、三届)

【写在前面的话19.03.24】 从第八届蓝桥杯到第十届蓝桥杯,我也是参加了三届蓝桥杯的老学姐啦,更不更新第十届的题解取决于网上有没有流出题目,但是第十届之后的题解将不会再更新了。下面的这些真题大多是我在大一的时候刷的,在大二的时候整理的,在大三的时候有修正或加更。大一的时候还不太会写代码,大约是2月份开始学编程,刷真题,4月初比的赛,然后拿了省一进了国赛,最后也混了一个国三。总有小伙伴问我大概...

ryo_218的博客 3万+

最大的算式(动态规划)

先抽象出状态dp(i,j),表示前i个数中有j个乘号的最大值。假设j个乘号中最后一个乘号的位置是第t个数和第t+1个数之间,则若要取最大值,须把第t个数之后的数加在一起再乘上dp(t,j-1),由此得出状态转移方程dp(i,j)=max(dp(t,j-1)*(sum[i]-sum[t])),sum[x]表示前x数的和,用记忆化搜索求解,解是dp(n,k)#include &amp;lt;iostream&amp;...

smithstf的博客 945

蓝桥杯 算法训练 乘积最大(动态规划)

问题描述 今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目: 设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大。 同时,为了帮助选手...

lovingchq的博客 1160

洛谷 P1018乘积最大

题目描述 今年是国际数学联盟确定的“20002000――世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰9090周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZXZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目: 设有一个长度为NN的数字串,要求选手使用KK个乘号将它分成K+1K+1个部分,找出一种分法,使得这K+1K+...

dianqian3434的博客 344

vnpy_ctp源码下载后转变为python可用的处理过程

vnpy_ctp源码下载后在window中编译使用

m0_37967652的博客 3328

车规级非易失存储选型指南:从AEC-Q100到ISO 26262的可靠性设计

非易失存储器是电子系统中负责长期保存关键数据与代码的核心组件,其可靠性直接决定了系统的长期稳定运行能力。在汽车电子领域,这一要求被提升到了极致,必须满足严苛的车规级标准。从原理上看,存储器的数据保持能力、擦写寿命等关键参数在高温、振动等恶劣环境下会急剧衰减,因此需要专门的设计与验证。其技术价值在于保障车辆全生命周期的功能安全与数据完整性,避免因存储失效导致的安全隐患或频繁维护。应用场景涵盖从发动机控制单元、自动驾驶域控制器到智能座舱的各类电子控制单元。本文聚焦于车规级非易失存储的选型,深入解析AEC-Q10

weixin_30938149的博客 458

【动态规划】最大的算式

题三、最大的算式 源程序名    BIGEXP.??? (PAS,C,CPP) 可执行文件名   BIGEXP.EXE 输入文件名   BIGEXP.IN 输出文件名     BIGEXP.OUT 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大。因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有

wu_yihao的专栏 1275

MIKE11实战:平原河网水动力建模从入门到精通(附GIS数据处理技巧)

本文系统介绍了MIKE11软件在平原河网水动力建模中的完整实战流程。从GIS数据预处理、河网构建、参数率定到结果分析,详细阐述了构建可靠数字孪生模型的关键步骤与技巧,旨在帮助水利工程师高效解决平原地区复杂水流模拟的挑战,为防洪决策提供科学依据。

weixin_28419039的博客 689

[蓝桥杯难题总结-Python]乘积最大

在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友 XZ 也有幸得以参加。数组中,目前已知的信息就是乘号个数为0时的最大值了,显然就是对应的每一位的数字。再看上面的递推公式可以知道,是从前往后推的,可以按照先物品后背包的顺序遍历。设有一个长度为 NN 的数字串,要求选手使用 KK 个乘号将它分成 K+1K+1 个部分,找出一种分法,使得这 K+1K+1 个部分的乘积能够为最大。第一行共有 22 个自然数 N,K(6≤N≤40,1≤K≤6)N,K(6≤N≤40,1≤K≤6)。

green_handnie的博客 1127

10bit SAR ADC电路:200多页设计与仿真文档,附gpdk045工艺与testbench,可直接导入Virtuoso仿真,含以太网、PLL电路例程及进阶ADC

拥有超过200页的详细设计和仿真文档,它以gpdk045工艺为基础,testbench均可直接导入virtuoso仿真,为我们提供了一个全面了解ADC电路设计的绝佳机会。通过对10bit SAR ADC电路的详细解析,我们不仅了解了其设计背后的原理和实现方法,还体会到了数字与模拟技术的交融之美。这个SAR ADC的结构采用了经典的电荷重分配架构。一个10bit SAR ADC电路,有200多页详细的设计和仿真文档,附带对应的gpdk045工艺,testbench都有,可直接导入virtuoso仿真。

OMyAVKmGPBOF的博客 1334

matlab球面投影(二)

matlab球面投影,想做一个全景相机,不知道,要做成啥样,于是在MATLAB先仿真一下,看下是个啥样子 百度别人做的,复制下面的代码到MATLAB的命令串口下,,网上找了张全景图,可以是bmp,jpg,改程序就可以了 回车运行就可以看到结果。 复制下面代码时,下面的中文注释记得删除,MATLAB是会报错的, close all; clear all; clc [x,y,z]=sphere(50); A=imread('a.JPG'); //名字是自己命名的,记得改 B=warp(x,y,-z,

rjszcb的博客 3163

蓝桥杯 ALGO-116 算法训练 最大的算式

算法训练 最大的算式 时间限制:1.0s 内存限制:256.0MB 问题描述   题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大。因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号。例如:   N=5,K=2,5个数字分别为1、2、3、4、5,可以加成:   1*2*(3+4+5)=24...

荔枝的FM 328

从网格划分到端口接地:一份给ADS新手的Momentum RF仿真避坑实操指南

本文为ADS新手提供Momentum RF仿真的实用指南,涵盖网格划分、端口接地、特殊结构处理等关键设置技巧。通过30-50 cells/λ原则、1/10波长限制等黄金法则,帮助用户平衡仿真精度与效率,避免常见错误,提升电磁仿真结果的准确性。

weixin_33692284的博客 506

学而思编程周赛-普及进阶组-赛情分析及题解 | 汇总(更新至2026年春第15周)

我把自己练习过的学而思编程周赛的题目都整理了一下。虽然网站上有许多高手的解法,但因为我自己也是初学者,所以只用了比较容易理解的方法来分析和解答。如果你也在学习的话,希望这些内容能对你有一点帮助。

团爸讲算法 552

10、硬件工程师笔试面试——继电器(2025版本)

在设计电路时,应综合考虑SSR的优势和局限性,确保选择合适的型号,并采取适当的设计措施来优化性能和可靠性。继电器的主要功能是利用较小的电流或电压来控制较大电流或电压的电路,实现信号的放大和隔离。在处理继电器故障时,应综合考虑电源、线圈、触点和负载等因素,及时进行故障诊断和处理,以确保电路系统的稳定性和安全性。由于汽车电子系统的复杂性,继电器的设计和选择必须考虑到系统的特定要求,包括电流容量、电压等级、环境条件(如温度、湿度、振动)以及所需的保护和隔离功能。确定线圈的工作电压或电流,以及吸合电压或电流。

XU157303764的博客 3733

[deprecated]第四章:TTM分析: 4.2.1 存储分配ttm_bo_validate功能实现分析

ttm_bo_validate是TTM框架中负责验证和调整BufferObject物理内存分配的核心函数,主要用于显存管理。该函数通过placement参数判断BO是否需要迁移或重新分配资源,完成内存分配、迁移及缓存策略调整等操作。实现流程包括资源释放、兼容性检查、迁移保护、新资源分配、迁移实现等步骤,支持多跳迁移和临时缓冲区。典型应用于显存溢出迁移、缓存策略调整、驱动初始化等场景,确保BO始终处于预期状态。

图形/计算GPU的驱动与虚拟化技术分享园地 846

我是龙少的蓝桥杯习题目录

入门训练 BEGIN-1 A+B问题 入门 BEGIN-2 序列求和 入门 求和公式 BEGIN-3 圆的面积 入门 实数输出 BEGIN-4 Fibonacci数列 入门 数列 取模 基础练习 BASIC-1 闰年判断 条件判断 BASIC-2 01字串 循环 BASIC-3 字母图形 循环 字符串 BASIC-4 数列特征 循环 最大值 最小值 累加 BASIC-5 查找整数 循环 判断 BA...

龙少的小窝 1057

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

蓝桥官网练习系统-题解目录-java语言描述

蓝桥官网题解目录 入门训练 题目编号 标题 题目+题解代码 关键字 BEGIN–001 A+B 题目+题解 入门 BEGIN–002 序列求和 题目+题解 入门、求和公式 BEGIN–003 圆的面积 题目+题解 入门、实数输出 BEGIN–004 Fibonacci数列 题目+题解 入门 数列 取模 基础练习 题目编号 标题 题目+题解代码 关键字 ...

Xiong-er 的博客 779

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

蓝桥杯 简单加法(基本型)

算法训练简单加法(基本型)   时间限制:1.0s  内存限制:512.0MB     问题描述   首先给出简单加法算式的定义:   如果有一个算式(i)+(i+1)+(i+2),(i>=0),在计算的过程中,没有任何一个数位出现了进位,则称其为简单的加法算式。   例如:i=3时,3+4+5=12,有一个进位,因此3+4+5不是一个简单的加法算式;又如i=112时,112+11

try_fei_ge的博客 1099

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

最大算式(动态规划)

最近在学习动态规划的内容,看了一个比较好的博客,推荐网址:http://www.cnblogs.com/sdjl/articles/1274312.html 一个比较好的例题,求最大算式和,问题描述   题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大。因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符

chenyang890的博客 610

洛谷 P1018 乘积最大

P1018 乘积最大 题目描述 今年是国际数学联盟确定的“20002000――世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰9090周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZXZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目: 设有一个长度为NN的数字串,要求选手...

HJ921004的博客 323

第九届-B10-乘积最大

标题:乘积最大 给定N个整数A1, A2, ... AN。请你从中选出K个数,使其乘积最大。   请你求出最大的乘积,由于乘积可能超出整型范围,你只需输出乘积除以1000000009的余数。   注意,如果X&amp;lt;0, 我们定义X除以1000000009的余数是负(-X)除以1000000009的余数。 即:0-((0-x) % 1000000009) 【输入格式】 第一行包含两个整数N和K。...

fattiger520的博客 259

8782_乘积最大

/* Name: 8782_乘积最大 Copyright: Author: Date: 27-06-18 09:17 Description: 8782_乘积最大 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别...

QiaoRuoZhuo的专栏 760

蓝桥杯 最大的算式——动态规划

问题描述  题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大。因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号。例如:  N=5,K=2,5个数字分别为1、2、3、4、5,可以加成:  1*2*(3+4+5)=24  1*(2+3)*(4+5)=45  (1*2+3)*(4+5)=45  ……输入格式  输...

ReidSC的博客 3149

蓝桥杯算法训练 乘积最大java

问题描述 今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目: 设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大。 同时,为了帮助选手...

weixin_43824233的博客 638

蓝桥杯 乘积最大(区间dp+记忆化搜索)

问题描述 今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目: 设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大。 同时,为了帮助选手...

starlet_kiss的博客 519
上一篇: 过河卒 深度优先搜索与递推
下一篇: 石子归并 动态规划 递归&递推
try_fei_ge
博客等级 码龄10年 31粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值