整数分解使得积最大
来源:互联网 发布:淘宝客分销系统源码 编辑:程序博客网 时间:2024/05/16 05:22
题目:
给一个数n,你可以将这个数拆成任意个整数之和。找出在所有的拆分方式中,拆出来的所有的数的积的最大值(也包括只拆成一个数,如2拆成2最大)。
如 n = 6, 可以拆成
3 * 3 = 9 2 * 4 = 8
2 * 2 * 2 = 8 1 * 1 * 4 = 4
1 * 1 * 2 * 2 = 4 ...
最大值为9。
3 * 3 = 9 2 * 4 = 8
2 * 2 * 2 = 8 1 * 1 * 4 = 4
1 * 1 * 2 * 2 = 4 ...
最大值为9。
分析:
比较容易想到的是使用动态规划来解该题。首先找出状态方程,可以设f(n)为n拆分后积最大的值,则f(n)=max{i*f(n-i)}, i=1,2...n-1。其中f(1)=1, f(2)=2。使用递归效率上可能会有点问题,不过也很容易改成非递归。
动态规划法代码:
//递归法int f(int N) {if (N == 1 || N == 2)return N;int max = N;for (int i = 1; i < N; i++) {int tmp = i * f(N - i);if (tmp > max)max = tmp;}return max;}
如果题目改成分解的数字不能有重复,比如6不能分解为3+3,则可以参见http://blog.csdn.net/jqmczx/article/details/6400723的分析。
- 整数分解使得积最大
- 积最大的整数分解
- 积最大的整数分解
- ccsu 1090 积最大的整数分解
- 正整数分解使得乘积最大问题
- 数和分解,乘积最大-vijos整数分解(版本2)
- 贪心算法——最大整数分解最大乘积
- 整数的分解与求最大最小组合!
- 整数分解成不同加数的最大乘积
- 整数分解
- 分解整数
- 整数分解
- 整数分解
- 将整数数组进行m等分,使得每一个部分的和相等且m最大
- 对于给定的整数集合S,求出最大的d,使得a+b+c=d。
- 整数分解之和最大问题(全分成3,少分成2)
- 整数分解之和最大问题(全分成3,少分成2)
- 使一个正整数分解为若干整数,使其各个数的乘积最大
- Struts2多文件下载
- Java对象的集合
- C#中Dispose和Close的区别!
- 关于ORACLE的数据导出导入操作。
- E-R设计
- 整数分解使得积最大
- 一个使用Ruby on Rails开发LBS网站的简单实例
- SpringSrcureCode在grails中实现用户--角色--权限的管理
- ELF对线程局部储存的处理(1) __thread
- 匹配汉字的正则表达式
- mysql 导入数据
- 用Lucene索引数据库
- linux 管道通信
- iBatis动态SQL标签用法