Re: [问题] Maximum Product

楼主: pttworld (批踢踢世界)   2016-09-10 13:49:01
※ 引述《cutekid (可爱小孩子)》之铭言:
: 给定一个数字 N (由 1 ~ 9组成)
: 其中插入 K 个乘号,使最后相乘的值要最大
: 举例:
: N = 746589, K = 2, 最大值 = 7465 x 8 x 9
: N = 1111114, K = 3, 最大值 = 11 x 11 x 11 x 4
: 请问这题除了 C(长度 - 1,K) 暴力搜寻
: 还有什么比较好的算法吗
: 谢谢 ^_^
一个数插入乘号使得乘积小于原数。
对于每一列n,
迭代比较列n-1之每一栏m,插入乘号后左乘以右之乘积,
乘积最大之m即为切点。
如left boundary ~ m形成的值大于m ~ right boundary,
列n之比较范围为left boundary ~ m,反之为m ~ right boundary。
C++版本,输出为切点索引值。
https://gist.github.com/anonymous/f4a2a632cd7f44a11ecd957fbd23dae1

Links booklink

Contact Us: admin [ a t ] ucptt.com