Prob_Solve 板


LINE

谢谢 dibery 我将你的想法理解後实作了一遍 程式网址(Perl): http://codepad.org/cicXQTmo 用了 bottom-up 迭代的方式计算 max_product (舍去递回) 时间复杂度应该是 O( 长度 * 长度 * K ) 大於你原来所说的 O( 长度 * K ) 以下为原始码: ============= #!C:\Perl\bin\perl -w ############## # 欲计算的数字 $N = 746589; ############## # 插入几个乘号 $K = 2; ########## # 数字长度 $L = length($N); ################ # 产生所有子数字 &GenSubNum; ######################################## # 计算 maxProduct[长度][$k = 0,1,2,3...] # # 长度 : left substring length # k : 插入乘号个数 ########################## # init maxProduct[长度][0] for($i = 0; $i < $L; ++$i){ $maxProduct[$i + 1][0] = $subNum[0][$i + 1]; } ############################################### # 迭代 $k = 1,2,3 ... 算出 maxProduct[长度][$k] for($k = 1; $k <= $K; ++$k){ for($leftLen = $k + 1; $leftLen <= $L - $K + $k; ++$leftLen){ for($i = $k, $max = 0; $i < $leftLen; ++$i){ $v = $maxProduct[$i][$k - 1] * $subNum[$i][$leftLen - $i]; $max = $v if($v > $max); } $maxProduct[$leftLen][$k] = $max; } } ############## # print answer print $maxProduct[$L][$K]; sub GenSubNum { @digit = split('',$N); for($i = 0; $i < $L; ++$i){ for($j = $i, $acc = 0, $len = 1; $j < $L; ++$j, ++$len){ $acc = $acc * 10 + $digit[$j]; $subNum[$i][$len] = $acc; } } } ※ 引述《dibery (简哥)》之铭言: : ※ 引述《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) 暴力搜寻 : : 还有什麽比较好的算法吗 : : 谢谢 ^_^ : 写一下我的想法,有错请告知 : 这里就先不考虑 overflow 的问题 : 设计函式 max_product( number, k ) 代表在 number 里插入 k 个乘号 : 以你第一个例子 : 要求解 max_product( 746589, 2 ) : 它的解是 : 7 * max_product( 46589, 1 ) : 74 * max_product( 6589, 1 ) : 746 * max_product( 589, 1 ) : 7465 * max_product( 89, 1 ) : 这其中一个 : 74658 * max_product( 9, 1 ) 因为 9 没法插一个乘号进去所以不算 : 然後每一个结果都可以存下来,递回就不用每次跑 : 算是 top-down 的 DP 吧,复杂度估计大概是 O( nk ) : 递回的终止条件是 k = 0 : 感觉用 python 会比较好写XD --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 210.61.233.210
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Prob_Solve/M.1473668359.A.EDF.html







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP