本篇内容介绍了“Java怎么解决剪绳子问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
创新互联建站服务项目包括叶城网站建设、叶城网站制作、叶城网页制作以及叶城网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,叶城网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到叶城省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
剪绳子问题
题目:
给你一根长度为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的绳子各段乘积的最大值是3
for(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(max
max=product;
product[i]=max;
}
}
max=products[length];
delete[] products;
return max;
}
“Java怎么解决剪绳子问题”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!