考考大家一道某著名IT的面试题
时间:2010-08-18
来源:互联网
有6种木块,数量无穷,大小分别12,-12,+7,-7,+5,-5,给任一正值空间W,从这六种木块中任意选择填充空间,直到正好填满,求使用木块数量最少的一种填充方法。
比如:W=19,这时有很多种填充方法,比如{12, 7},{7,7,5}等等,,但第一种使用木块最少
当时给了我15分钟,,悲剧了
作者: chong232 发布时间: 2010-08-18
写程序么?
我的思路是,6个备用模块,取组合,然后相加,得到64--!种数值,然后把和值作为key, 把对应模块重量作为value从小到大,顺序保存到一个表中,然后用二分法查表即可。
作者: davelv 发布时间: 2010-08-18
这个组合,你怎么取,这才是关键的
作者: chong232 发布时间: 2010-08-18
我手上有现成的组合函数,STD里面也应该有。从C(0,6)取到C(6,6)全部组合就可以了,一共64 --!种取法。
作者: davelv 发布时间: 2010-08-18
你可以测试一下,我觉得不行啊
另外,C(6, 0) -- C(6,6)才64,不知道你72怎么来的
作者: chong232 发布时间: 2010-08-18
作者: davelv 发布时间: 2010-08-18
作者: slay78 发布时间: 2010-08-18
好好想想,这个问题挺复杂的
作者: chong232 发布时间: 2010-08-18
请告诉我,我的算法有什么问题吗?
我明白了,数量无穷。。
作者: davelv 发布时间: 2010-08-18
比如说你W为17,然后阈值定义为12,那么就是求17到29之间最优值的最小值了
至于阈值定多少,肯定不会很大,对于所有的情况估计值不会超过24,有待具体分析,我只是大概给个范围
最后就是这个问题的最主要问题了,给定正数块12,7,5怎么用最小数目的块构造一个T(W到W+S之间的数),这个用动态规划就可以实现了,假设对于T最小块数是best[T],那么best = min(best[T - 5], best[T - 7], best[T - 12]),对于无法获得的就设置为无穷大,初始值是best[0] = 0,然后结果就是min(best[i])(W<=i<=W+S)。
同时有一个推论,就是当W很大的时候,并不需要从1算到W,而是貌似只要计算到一个特定值,其它的部分用12(最大的块)填满(以前看到过,不知道有没有记错),这样时间就更快了。
空间上由于对于每个块,我们需要的数值跨越幅度只有12,那么我们只要维护长比12和S的值大一点的数组就行了,然后滚动向前,个人建议取2的幂,比如64这样的,因为循环滚动的时候下标不用%64,只要&63就可以了。
以上个人观点,只是一个大体思路,难免有不对之处,见谅

作者: daybreakcx 发布时间: 2010-08-18
当w>12时,每次递减12直至剩余的空间在[1,12]的范围内,然后再从表中获取对应取法。
作者: davelv 发布时间: 2010-08-18
当w>12时,每次递减12直至剩余的空间在[1,12]的范围内,然后再 ...
davelv 发表于 2010-08-18 10:25
贪心是无法总得到最优解的,比如我给你个14
按照你的方法,你先减去最大的,也就是减去12,剩下2,然后构造2最快的是用两个,就是7和-5,总共用了3个
实际上我两个7就搞定了。
作者: daybreakcx 发布时间: 2010-08-18
当时我回答的也是贪心,不过先判断是否是12,7,5的倍数,再判断是否可以最大可能的填充,即依次尝试填充12,7,5,最后只剩下W=1,2,3,4这四种情况了,可以穷举找出
但我保证不了是最优,面试官不置可否,,悲剧
作者: chong232 发布时间: 2010-08-18
考官不置可否是经常的事情,这个问题还算比较经典的动态规划,贪心可以局部进行时间和空间的增强,但是要想获得最优解贪心不行
作者: daybreakcx 发布时间: 2010-08-18
作者: davelv 发布时间: 2010-08-18
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28