- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
P最大乘积【DOC精选】
最大乘积
题目解析:
贪心策略!
一个大的数,是分解好,还是不分解好?
设这个数为m=a+b,很自然a*ba+b(a,b均1),因为乘法乘以1,其结果不变。也就是说任何一个数,只要你愿意分解,你就可以得到更大的结局。
很自然想到,分解的越多越好!
交换论证法来证明:
给定一个最优解(分解成多个数据),如果其中某个数可以分解的话,我们将得到一个新的解,其结果比优解还要优!
分解成的因子越小(1)越好,乘积越大
要求分解出来的因子均不可相同。
本题贪心策略:
分解的因子,从2开始,尽可能地要求因子小,同时又不能相同!
因此从2开始,再逐步递增!
结果可能的情形:2*3*4*…..*K*m
最后得到的一个数m,(m=k)
处理方案:m将和某个数相同,不符合题意,这样,我们只能调整2…k中的一些数,要求每个数都尽可能小,我们想到从末端开始,逐步微调整,循环进行!
初看此题,很容易想到用回溯法进行搜索,但是这里的n范围比较大,最多到10000,如果盲目搜索,运行时间比较长,效率很低,对于部分数据可能得到结果,对于大部分数据会超时或栈溢出。
先来看看几个n比较小的例子,看能否从中找出规律:
n 分解方案 最大的乘积 5 2 3 6 6 2 4 8 7 3 4 12 8 3 5 15 9 2 3 4 24 10 2 3 5 30 可以发现,将n分解成a1, a2, a3, a4,…, am这m个自然数,该序列为从2开始的一串由小到大的自然数,如果a1为1,则对乘积没有影响,而且使n减少,没有实际意义,只有特殊情况如n为3、4时才可能用上。
设h=5,可以证明当将h拆分为两个不相同的部分并且两部分都大于1时两部分的乘积大于h。证明如下:
将h分为两部分:a,h-a其中2=ah/2,两部分的乘积为a*(h-a)。
a*(h-a)-h=h*a-a*a-h=h*(a-1)-a*a
因为h2*a,所以a*(h-a)-h2*a*(a-1)-a*a=a*a-2*a=a*(a-2)
又因为a=2,所以a*(a-2)=0,所以a*(h-a)-hO即a*(h-a)h。
从上面的证明可以看出,对于指定的正整数,如果其大于等于5,将它拆分为不同的部分后乘积变大,对于中间结果也是如此。因此可以将指定的n,依次拆成a1+a2+a3+a4+…+am,乘积最大。
现在的问题是如何拆分才能保证n=a1+a2+a3+a4+…+am呢?
可以先这样取:当和不足n时,a1取2,a2取3,…,am-1取m,即从2开始按照自然数的顺序取数,最后剩余的数给am,如果am=am-1,此时am跟前面的数字出现了重复,则把am从后面开始平均分布给前面的m-1个数。为什么要从后面开始往前呢?同样是考虑数据不出现重复的问题,如果是从前面往后面来平均分配,如2加上1以后变成3,就跟后面的已有的3出现了重复。这样操作到底是否正确、是否能保证乘积最大呢?还要加以证明。证明过程如下:
设两个整数a,b的和为2s,且ab,设a=s-1,则b=s+1,a*b=(s-1)*(s+1)=s2-1,如果a=s-2,则b=s+2,a*b=(s-2)*(s+2)=s2-4。
a-b的绝对值越小,乘积的常数项越大,即乘积越大,上面的序列a1, a2, a3, a4, …, am正好满足了a-b的绝对值最小。但是还要注意两个特例就是n=3和n=4的情况,它们的分解方案分别为1,2和1,3,乘积分别为2和3。
以n=10为例,先拆分为:10=2+3+4+1,最后一项为1,比4小,将其分配给前面的一项,得到10=2+3+5,所以最大的乘积为2*3*5=30。
以n=20为例,拆分为:20=2+3+4+5+6,正好是连续自然数的和,所以最大乘积为2*3*4*5*6=720。
再以n=26为例,先拆分为:26=2+3+4+5+6+6,因为最后一项为6,不比最后第二项大,所以将其平均分给前面的项,优先考虑后面的项,即前面的4项各分到1,笫5项6分到2,最后是26=3+4+5+6+8,所以最大的乘积为3*4*5*6*8=2880。
由于n可能大到10000,分解之后的各项乘积位数比较多,超过普通的数据类型的位数,所以要用到高精度运算来进行整数的乘法运算,将结果保存在数组里。
本题的贪心策略就是:
要使乘积最大,尽可能地将指定的n(n4)拆分成从2开始的连续的自然数的和,如果最后有剩余的数,将这个剩余的数在优先考虑后面项的情况下平均分给前面的各项。
基本算法描述如下:
(1)拆分过程
拆分的数a先取2;
当na时做
Begin
选择a作为一项;
a增加1;
n减少a;
您可能关注的文档
- pspice9单管实验指导【DOC精选】.doc
- PSPC检验项目操作方法【DOC精选】.doc
- PSP下载游戏的方法【DOC精选】.doc
- PSB课程【DOC精选】.doc
- Pro曲线方程大全【DOC精选】.doc
- pspice实验【DOC精选】.doc
- psychological barrier【DOC精选】.doc
- PS-WI-- Creo 研发部参数配置加载作业规范-A【DOC精选】.doc
- Ps中的一些基本概念【DOC精选】.doc
- PS基础知识教程【DOC精选】.doc
- 场地脚手架工程施工方案(3篇).docx
- 2024年浙江省丽水市松阳县玉岩镇招聘社区工作者真题及参考答案详解一套.docx
- 2024年河南省郑州市惠济区古荥镇招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省杭州市淳安县文昌镇招聘社区工作者真题及完整答案详解1套.docx
- 2024年浙江省台州市三门县小雄镇招聘社区工作者真题带答案详解.docx
- 2024年浙江省宁波市余姚市河姆渡镇招聘社区工作者真题及完整答案详解1套.docx
- 2024年浙江省丽水市景宁畲族自治县雁溪乡招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省杭州市临安市板桥乡招聘社区工作者真题及答案详解一套.docx
- 2024年湖北省宜昌市点军区土城乡招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省台州市路桥区桐屿街道招聘社区工作者真题附答案详解.docx
最近下载
- ansys结构声振耦合解决方案.pptx VIP
- ANSYS系统仿真与数字孪生解决方案.pptx VIP
- 第17课 电脑动画 教案 人教版 美术 五年级上册.docx VIP
- 湖北省黄冈市2025年八年级上学期1月期末英语试题(含答案).docx VIP
- 娱乐先锋II_高级KTV系统.pdf VIP
- 汽车软件简介演示.pptx VIP
- 水处理大法聚二甲基二烯丙基氯化铵在给水除藻中的作用应用的探讨.doc VIP
- 2026龙飞平面图形推理基础理论➕百大图形3.0版本.pdf VIP
- 连云港“高质发展、后发先至”-全面建设连云港小康社会继续教育题库及.pdf VIP
- 水污染控制工程第11章.ppt VIP
文档评论(0)