洛谷 P1018乘积最大

题目描述

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

设有一个长度为NN的数字串,要求选手使用KK个乘号将它分成K+1K+1个部分,找出一种分法,使得这K+1K+1个部分的乘积能够为最大。

同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子:

有一个数字串:312312, 当N=3,K=1N=3,K=1时会有以下两种分法:

1、3 \times 12=363×12=36 2、31 \times 2=6231×2=62

这时,符合题目要求的结果是: 31 \times 2 = 6231×2=62

现在,请你帮助你的好朋友XZXZ设计一个程序,求得正确的答案。

输入输出格式

输入格式:

 

程序的输入共有两行:

第一行共有22个自然数N,KN,K(6≤N≤40,1≤K≤66N40,1K6)

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

 

输出格式:

 

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

 

输入输出样例

输入样例#1: 复制
4  2
1231
输出样例#1: 复制
62

分析:

一个很明显的dp问题,但是数字因为结果数字太大,所以要用到大数类,就是Biginteger。

我开辟了一个二维数组 res[k+1][len+1] ,其中 k+1 是用到了几个乘号,len 就是记录最后一个数字的位置。

动态转移方程很简单:dp[n][m]=Math.max(dp[n][m],dp[n-1][m]*最后一个要乘的数字);

代码:

 1 import java.math.BigInteger;
 2 import java.util.Scanner;
 3 
 4 public class Main {
 5     public static void main(String args[]) {
 6         Scanner sc=new Scanner(System.in);
 7         int num=sc.nextInt();
 8         int k=sc.nextInt();
 9         String str=sc.next();
10         int len=str.length();
11         BigInteger[][] res=new BigInteger[k+1][len+1];
12         for(int n=1;n<=len;++n)
13             res[0][n]=new BigInteger(str.substring(0,n));
14         for(int i=1;i<=k;++i)
15             for(int j=1;j<=len;++j) 
16                 for(int n=j-1;n>0;--n) {
17                     if(res[i-1][n]==null)
18                         continue;
19                     BigInteger b=new BigInteger(str.substring(n,j));
20                     BigInteger r=res[i-1][n].multiply(b);
21                     if(res[i][j]==null)
22                         res[i][j]=r;
23                     else
24                         res[i][j]=res[i][j].max(r);
25                 }
26         System.out.print(res[k][len]);
27     }
28 }

其中有一个判定大数为空的话,就直接跳过的if语句。首先开辟的大数数组和int数组是一样的,他的初始值不是0而是null,所以如果你不给他赋值的话他就是null,是无法计算的。

如果当前数组位置为null的话,就说明不会有这种情况,比如res[2][1],你只有长度为1的数字,是无论如何也无法用两个乘号去运算的,所以直接跳过就可以了,不必纠结。

转载于:https://www.cnblogs.com/CHAHA123/p/10820799.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364674.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matrix derivatives

来源&#xff1a;cs229 stanford Machine Learning Notes转载于:https://www.cnblogs.com/pertinencec/p/10082965.html

Project Student:维护Webapp(只读)

这是Project Student的一部分。 其他职位包括带有Jersey的 Web服务 客户端&#xff0c;带有Jersey的 Web服务服务器 &#xff0c; 业务层 &#xff0c; 具有Spring数据的持久性 &#xff0c;分片集成测试数据 &#xff0c; Webservice集成和JPA标准查询 。 当我开始这个项目时…

基于vue的无缝滚动组件

vue-seamless-scroll A simple, Seamless scrolling for Vue.js 在awesome上一直没有发现vue的无缝滚动组件&#xff0c;在工作之余写了个组件&#xff0c;分享出来希望大家一起学习进步。Demo https://github.com/chenxuan0000/vue-seamless-scroll/index.html Installatio…

教务管理及教材订购系统设计文档

教务管理及教材订购系统设计文档目录 一、概述 1.1 开发背景 1.2 使用技术 1.3运行环境 1.4 设计目标 1.4.1权限管理 1.4.2信息管理 1.4.3选课管理 1.4.4 成绩管理 1.4.5教材订购 二、功能分析划分 2.1信息管理 2.1.1班级信息管理 2.1.2专业信息管理 2.1.3课程信息管理 2.1.4学…

关于构造器中的super()

1、为什么在子类的constructor里面要加一句super&#xff08;&#xff09;&#xff1f; 答&#xff1a;如果子类用了extends的关键字继承的父类&#xff0c;那么子类在使用构造器的时候就要加super&#xff08;&#xff09;语句&#xff0c;这是语法规范&#xff0c;就是这么定…

php 复制行,phpstorm怎么快速复制当前行?

qq_花开花谢_0PhpStorm 默认快捷键ctrlj 插入活动代码提示ctrlaltt 当前位置插入环绕代码altinsert 生成代码菜单Shift Enter 新一行ctrlq 查看代码注释ctrld 复制当前行ctrly 删除当前行ctrlalty 刷新项目缓…

Project Student:维护Webapp(可编辑)

这是Project Student的一部分。 其他帖子包括带有Jersey的 Web服务 客户端&#xff0c;带有Jersey的 Web服务服务器 &#xff0c; 业务层 &#xff0c; 具有Spring数据的持久性 &#xff0c;分片集成测试数据 &#xff0c; Webservice集成 &#xff0c; JPA标准查询和维护Webap…

express接受get数据

server.use(/,function(req,res){res.writeHead(200, { content-type:text/html;charsetutf-8});var namereq.query[name]; //直接req.query[参数名称]&#xff1b;var pwdreq.query[pwd];if(!users[name]){res.write("不存在该用户");}else if(users[name]!pwd){re…

php curl 采集文件,curl获取远程文件内容

/**获取远程文件内容param $url 文件http地址*/function fopen_url($url){if (function_exists(file_get_contents)) {$file_content file_get_contents($url);} elseif (ini_get(allow_url_fopen) && ($file fopen($url, rb))){$i 0;while (!feof($file) &&…

SAP work process Memory allocate

SAP work process Memory allocate Memory allocation sequence to dialog work processes in SAP What is the memory allocation sequence to dialog work processes in SAP?When does a work process go to PRIV mode?How to avoid or minimize work process going to PRI…

基于 Vue.js 的移动端组件库mint-ui实现无限滚动加载更多

通过多次爬坑&#xff0c;发现了这些监听滚动来加载更多的组件的共同点&#xff0c; 因为这些加载更多的方法是绑定在需要加载更多的内容的元素上的&#xff0c; 所以是进入页面则直接触发一次&#xff0c;当监听到滚动事件之后&#xff0c;继续加载更多&#xff0c; 所以对…

创建Maven源代码和Javadoc工件

许多人都知道Maven源代码和Javadoc工件&#xff0c;但是不知道为什么要创建它们。 我肯定在这个阵营中–我可以理解为什么人们想要此信息&#xff0c;但是由于要手动导航Maven存储库&#xff0c;因此获取信息似乎相对效率较低。 然后我被线索棒击中。 这些工件由IDE而非人员使…

JS内置方法(object)

属性 constructorprototype 实例方法 1、toString()返回当前对象的字符串形式&#xff0c;返回值为String类型。 2、toLocaleString()返回当前对象的"本地化"字符串形式&#xff0c;以便于当前环境的用户辨识和使用&#xff0c;返回值为String类型。 3、valueOf()返回…

金蝶云php webapi,K/3 Cloud Web API销售出库单PHP完整示例【分享】

按照惯例&#xff0c;先上图【销售出库单】保存&#xff0c;如图&#xff1a;已经打印出 登陆请求及登陆成功&#xff0c;保存请求及保存成功的返回信息。如下代码&#xff0c;是完全可以直接进行运行的代码&#xff0c;具体详见代码中注释。[code]//K/3 Cloud 业务站点地址$cl…

JavaFX自定义控件– Nest Thermostat第2部分

自从我开始创建Nest恒温器FX自定义控件以来&#xff0c;已经有一段时间了&#xff01; 因此&#xff0c;上次&#xff0c;如Gerrit Grunwald所建议&#xff0c;我花了一些时间用inkscape复制Nest恒温器设计&#xff0c;这是构建JavaFX版本的第一步。 今天&#xff0c;我想与大…

函数和模块的使用

函数&#xff1a; 函数作用&#xff1a; 减少代码重复 增加程序可扩展性 使程序易于维护 函数定义&#xff1a; 关键字&#xff1a;def 名称&#xff1a;与变量名命名规则相同 参数&#xff1a; def fun() #无参数 def fun(x) #普通参数 def fun(name, age22, happyalex) #默…

关于 Error: No PostCSS Config found in 的错误

问题描述&#xff1a; 项目在本地运行不报错&#xff0c;上传到 GitHub 之后&#xff0c;再 clone 到本地&#xff0c; npm install安装完成之后再执行 npm run dev这时报错 Error: No PostCSS Config found in... 本以为是 GitHub 上传的问题&#xff0c;后开又试了两回&am…

haproxy实现会话保持

HAProxy系列文章&#xff1a;http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1.反向代理为什么需要设置cookie 任何一个七层的http负载均衡器&#xff0c;都应该具备一个功能&#xff1a;会话保持。会话保持是保证客户端对动态应用程序正确请求的基本要求。 还是那个被举烂…

java dubbo 方案,Missing artifact com.alibaba:dubbo:jar:2.8.4 dubbo解决方案

由于maven中心仓库中没有dubbo2.8.4&#xff0c;所以需要到github中下载源码包自己编译。下载解压后&#xff0c;进入解压目录执行命令&#xff1a;mvn install -Dmaven.test.skiptrue2.mvn install:install-file -Dfiled:\xxx\dubbo-2.8.4.jar -DgroupIdcom.alibaba -Dartifac…

Java 8:Lambda表达式与自动关闭

如果您通过Neo4j的Java API和Java 6使用了Neo4j的早期版本&#xff0c;则可能具有与以下类似的代码&#xff0c;以确保在事务中进行写操作&#xff1a; public class StylesOfTx {public static void main( String[] args ) throws IOException{String path "/tmp/tx-st…