剑指offer-面试题14-剪绳子-贪婪算法
2024-10-08 10:01:16
/*
题目:
给定一个长度为n的绳子,把绳子剪为m段,(n>1,m>1)
求各段绳子乘积的最大值。
*/
/*
思路:
贪婪算法。
当绳子的长度大于5时,尽可能多的剪长度为3的绳子;当剩下的绳子长度为4时,把绳子剪为两段长度为2的绳子。
*/
/*
证明:
当n>=5时,2(n-2)>n,3(n-3)>n,也就是当n大于5时,就把它剪为长度为3或2的绳子,且3(n-3)>2(n-2),所以尽可能的剪为长度为3的绳子。
当n=4时,剪为2*2最大。
*/
#include<iostream>
#include<string.h>
#include<algorithm>
#include<math.h>
using namespace std;
int cutRope(int number){
if(number <= 1){
throw("invalid parameter");
}
if(number == 2 || number == 3){
return number-1;
}
int timesOf3 = number / 3; //当剩余长度为4时,剪为2*2
if(number - timesOf3 * 3 == 1){
timesOf3 --;
}
int timesOf2 = (number - timesOf3 * 3) / 2;
return (int)(pow(3,timesOf3))*(int)(pow(2,timesOf2));
} int main(){
cout<<cutRope(8)<<endl;
}
最新文章
- 关于如何通过定义自己的CameraManager来控制视角
- Hadoop中操作HDFS出现异常的解决方法
- 科学家有了钱以后,真是挺吓人的——D.E.Shaw的牛逼人生
- Win32中目录的操作
- TimeZone 时区 (JS .NET JSON MYSQL)
- Java三大特征之封装(一)
- UML在需求分析与系统设计中之实战讲解
- 多行文本省略号的实现.html
- gulp learning note
- 使用 slf4j抽象日志层 和 其他日志实现对接
- NSParagraphStyle 的属性
- 更改电脑名称后, Cnario无法播放画面和声音, 开机后停留在桌面, Cnario Player软件界面的停止按钮为蓝色可选状态
- Angular记录(1)
- Eclipse 报 ";The builder launch configuration could not be found"; 错误
- 【CUDA学习】内核程序调试
- Web Api问题汇总
- shell操作典型案例--FTP操作
- Linux下的高级拾色器—Pick
- .NET实现多个不同有效时间Session方案思考
- Windbg基本命令应用总结