/*
题目:
给定一个长度为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;
}

  

最新文章

  1. 关于如何通过定义自己的CameraManager来控制视角
  2. Hadoop中操作HDFS出现异常的解决方法
  3. 科学家有了钱以后,真是挺吓人的——D.E.Shaw的牛逼人生
  4. Win32中目录的操作
  5. TimeZone 时区 (JS .NET JSON MYSQL)
  6. Java三大特征之封装(一)
  7. UML在需求分析与系统设计中之实战讲解
  8. 多行文本省略号的实现.html
  9. gulp learning note
  10. 使用 slf4j抽象日志层 和 其他日志实现对接
  11. NSParagraphStyle 的属性
  12. 更改电脑名称后, Cnario无法播放画面和声音, 开机后停留在桌面, Cnario Player软件界面的停止按钮为蓝色可选状态
  13. Angular记录(1)
  14. Eclipse 报 &quot;The builder launch configuration could not be found&quot; 错误
  15. 【CUDA学习】内核程序调试
  16. Web Api问题汇总
  17. shell操作典型案例--FTP操作
  18. Linux下的高级拾色器—Pick
  19. .NET实现多个不同有效时间Session方案思考
  20. Windbg基本命令应用总结

热门文章

  1. 《N诺机试指南》(五)进制转化
  2. RocketMQ重试机制和消息幂等
  3. 《C# 爬虫 破境之道》:第二境 爬虫应用 — 第七节:并发控制与策略
  4. 基于 Serverless Component 全栈解决方案 Ⅱ
  5. php单例模式的实现
  6. Ansible 学习目录
  7. java String hashCode遇到的坑
  8. Python2-Django配置阿里大于的短信验证码接口
  9. Python性能优化方案
  10. c#音乐播放器