新浪2014校招的两道笔试题. [搬萝卜 & 取水果]

【转载请注明出处: http://blog.csdn.net/lzl124631x

2. (10分) 一只小兔子有100根胡萝卜, 它要走50米才能到家, 每次它最多搬50根胡萝卜, 而每走1米就要吃掉1根胡萝卜, 请问它最多能把多少根胡萝卜搬到家里?

3. (10分) 有任意种水果, 每种水果个数也是任意的, 两人轮流从中取出水果, 规则如下:
1) 每一次应取走至少一个水果; 每一次只能取走一种水果的一个或者全部.
2) 如果谁取到最后一个水果就胜.
给定 水果种类 N 和每种水果的个数 M1, M2, ..., Mn, 算出谁取胜.










Time to rack your brain, dude.











[Carrot Problem]
一旦折返, 折返的路程上花费为 3c/m; 不折返的话花费为 1c/m.
因此需要尽量减小折返, 确保最后不折返的时候带的萝卜尽量多(上限50个).
假设总折返距离为 x(m), 有 100 - 3x <= 50, 即 x >= 50 / 3
最后剩下的萝卜个数为: (100 - 3x) - (50 - x) = 50 - 2x <= 50 / 3
因此, 至多剩下 16 个萝卜(只能取整数的话), 此时折返路程为 17m.
能取分数的话直接取等号就行了, 不再赘述.


[Fruit Problem]
我用归纳法做出来的. 之前想了很多情况想直接推理出来, 但是越弄越乱.
我一开始没有注意到一个事实:
此题为求必胜策略的题, 每次取水果之前的必胜与否是由取之后的必败与否决定的.
因此应该先进行从简单到复杂的递推, 然后归纳找规律.


假设两个人分别为 A 和 B, A 先取水果. 水果总个数为 M (即 M1 + M2 + ... + Mn). 开始分情况讨论:
(1) 有 1 种水果
A 必胜
(2) 有 2 种水果
此时两个人都不敢全部拿走一种水果, 因为那样会送对方进入(1)的必胜态, 自己必败.
所以两个人都只能一个一个拿, 这样谁拿走最后一个就由 M 的奇偶性决定.
若 M 是奇数, A 必胜; 否则 A 必败.
(3) 有 3 种水果
A先取, 他有足够的主动权, 让 B 进入(2)的必败态.
如果 M 是奇数, 说明至少有一种水果有奇数个, 全部取走这一种水果后, B 就会进入(2)中的必败态(M' 为偶数), 因此, A 必胜;
如果 M 是偶数, 由于 N 为 3, 因此至少有一种水果有偶数个, 全部取走这一种水果后, B 就会进入(2)中的必败态(M' 为偶数), 因此, A 必胜;
综上, A 必胜
(4) 有 4 种水果
A 先取, 他不敢全部取走一种, 因为会送 B 进入(3)的必胜态, A 就必败.
因此 A 只能取一个.
a) 若 A 取走这一个就变成(3)了, 说明 4 种水果都只有一个(否则 A 可以避免取走一种).
此时 M 为偶数 4 且 A 必败.
b) 若 A 取完这一个还剩 4 种水果, 那 B 同上分析也只敢取一个.
依次类推, 谁最后面对a)的情况就必败了.
因此胜负由 M - 4 的奇偶性决定, 它与 M 的奇偶性相同. (其实(2)中也可以想成由 M - 2 的奇偶性决定)
若 M 为奇数, A 必胜; 否则 A 必败.
综合 a) 与 b)  若 M 为奇数, A 必胜; 否则 A 必败.

至此, 已经可以看到规律了.
1. 若 N 为奇数, A 必胜;
2. 若 N 为偶数且 M 为奇数, A 必胜;
3. 否则 A 必败.

形象点儿的话, 用一个表描述.
"奇"代表"有奇数个水果的品种数", "偶"含义类似
"胜负"为 1 代表 A 必胜, 0 代表 A 必败


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值