免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: chong232
打印 上一主题 下一主题

考考大家一道某著名IT的面试题 [复制链接]

论坛徽章:
2
15-16赛季CBA联赛之四川
日期:2016-04-23 14:25:46操作系统版块每日发帖之星
日期:2016-05-09 06:20:00
31 [报告]
发表于 2010-08-18 18:27 |只看该作者
本帖最后由 jeasun 于 2010-08-18 18:54 编辑

刚才的code有点问题,应该把大数放在里面
遇到12x7=84这种数就可以得到7而不是12了。

论坛徽章:
2
15-16赛季CBA联赛之四川
日期:2016-04-23 14:25:46操作系统版块每日发帖之星
日期:2016-05-09 06:20:00
32 [报告]
发表于 2010-08-18 18:30 |只看该作者
回复 26# chong232
哈哈  犀利的西交大学生 非数学专业

论坛徽章:
2
15-16赛季CBA联赛之四川
日期:2016-04-23 14:25:46操作系统版块每日发帖之星
日期:2016-05-09 06:20:00
33 [报告]
发表于 2010-08-18 18:35 |只看该作者
本帖最后由 jeasun 于 2010-08-18 18:50 编辑

回复 30# daybreakcx
这个范围。。。
改了看code

论坛徽章:
2
15-16赛季CBA联赛之四川
日期:2016-04-23 14:25:46操作系统版块每日发帖之星
日期:2016-05-09 06:20:00
34 [报告]
发表于 2010-08-18 18:53 |只看该作者
本帖最后由 jeasun 于 2010-08-18 18:57 编辑

回复 29# towardWang
问题变成这样的话,复杂多了。10楼的分析就很犀利~~

论坛徽章:
0
35 [报告]
发表于 2010-08-18 20:09 |只看该作者
本帖最后由 feuerchop 于 2010-08-18 20:12 编辑

我给个解法:
6种木块(12,-12,+7,-7,+5,-5),数量任意,假设背包大小W=N
为了用最小的块数填充,于是从权指最大的12开始,
-(if N>=12)N%12:得到商X和余数Y (X对应12的块数)
--观察余数Y:范围是从0-11
---if Y>=7: Y%7=X1余Y1
----显然Y1的范围是0-4
---if 7>Y>=5: Y%5 = X2于Y2
----显然Y2的范围是0-1
---if Y<5: Y的取之范围0-4
- (if 12>N>=7)N%7
--余下操作同12
-(if 7>N>=5) N%5
--余下操作同12
-否则便是1,2,3,4,参考下面的解法
到此为止,我们剩下4个数需要处理:1,2,3,4 (0忽略)
也就是说用最小的块数组合出1,2,3,4把上面得到的余数(Y1,Y2或Y)填满。对应的解法是:
1: (3*5)+(-7*2)  (5块)
2:(7-5) (2块)
3:(3*5)-(12) (4块)
4: (7*2)-(5*2) (4块)
加上之前的商便是最后需要的块数。
此解法仅供参考于讨论。

论坛徽章:
0
36 [报告]
发表于 2010-08-18 22:03 |只看该作者
如果b,c都为正,则有12A+7B+5C = w,A = a + 1,B=b-1,C=c-1,则显然|a|+b+c>|A|+B+C=|A|+b+c-2。a|+|b|+|c|最小不成立。



这句看不懂,只明白了|a|+b+c>|A|+b+c-2,但为什么可以导出  |a|+|b|+|c|最小不成立??

论坛徽章:
0
37 [报告]
发表于 2010-08-18 22:19 |只看该作者
回复 35# feuerchop


    见我前面的帖子,一样会被考官bs的

论坛徽章:
0
38 [报告]
发表于 2010-08-19 09:56 |只看该作者
我猜不出来

论坛徽章:
0
39 [报告]
发表于 2010-08-19 09:58 |只看该作者
本帖最后由 shhgs 于 2010-08-19 10:07 编辑

NP

论坛徽章:
0
40 [报告]
发表于 2010-08-19 10:03 |只看该作者
7 * x + 5 * y  + 12 * z = w;

7 * x' + 5 * y' =  w';

w0 = {-11 ... 11} ==> table[] = |x|+|y| = {...};

w1'   = w % 12,  z1   = w / 12;
w2'   = w1' - 12, z2   = w / 12 + 1;
min(|x| + |y| + |z|)  =  min(table[w1'] + |z1|, table[w2'] + |z2|);
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP