Java怎么解决剪绳子问题
作者:小确幸
时间:2023-04-26
来源:互联网
浏览:0
剪绳子问题题目:给你一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...k[m]。请问k[0]*k[1]*...k[m]可能的最大乘机是多少?例如:当绳子的长度是8时,我们把他剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。intmaxProductAfterCutting(intlength){if(length
剪绳子问题
题目:
给你一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...k[m]。
请问k[0]*k[1]*...k[m]可能的最大乘机是多少?
例如:当绳子的长度是8时,我们把他剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。
int maxProductAfterCutting(int length){if(length<2)return 0 ;if(length==2)return 1;if(length==3)return 2;//这里是2而不是下面的3,是因为最少要分割2次//products[i]存放的是第长度为i的绳子剪成若干段后,各段乘机的最大值,int*products=new int[length+1];products[0]=0;products[1]=1;products[2]=2;products[3]=3;//这个地方与上面return是不同的,因为长度为3的绳子各段乘积的最大值是3for(int i=;i<=length;++i)//i是递增的,也就是绳子长度是递增的,先求出长度为i的乘机最大值,{//在求product[i]之前,对于每一个j(分割后每一小段绳子的长度)而言,product[j]都已经求出来了,并 //且结果保存在projects[j]里,为了求解product[j],需要求出所有可能的product[j]*product[i-j]并//比较他们的最大值。for(int j=1;j<=(i/2);++j){int product=product[j]*product[i-j];if(maxmax=product;product[i]=max;}}max=products[length];delete[] products;return max;}
作者最新文章
Windows 10
2026-09-16 17:44
Python安装后怎么打开:使用IDLE或命令行启动解释器
2026-09-16 13:54
Windows系统Python安装教程:下载、勾选PATH及环境变量配置
2026-09-16 13:53
“等灯不计时”落地解析:算法善意如何转化为技术能力与生态协同
2026-09-08 18:03
英伟达推出NVHBM:定制HBM带宽提升30%并扩展NVLink Fusion生态
2026-09-08 17:31
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多
Windows 10
Windows
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式
Windows/macOS/Linux
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















