美文网首页
网易数据分析实习试题2018-部分解题思路

网易数据分析实习试题2018-部分解题思路

作者: Ziay013 | 来源:发表于2020-02-01 15:31 被阅读0次
    1. 有2堆宝石,A和B一起玩游戏,假设俩人足够聪明,规则是每个人只能从一堆选走1个或2个或3个宝石,最后全部取玩的人获胜,假设2堆宝石的数目为12和13,请问A怎么可以必胜?
    • 让A先取

    • 让B先取

    • 没有策略能够让A必胜

    • 说法都不正确

      涉及知识点:动态规划算法,但本题中不需要写code也可直接得出答案,思路如下:

    1 想象只剩下1个宝石,拿的人必胜;(必胜点W)
    2 想象剩下2个宝石,拿的人一定会选择拿2个(必胜点W)
    3 想象剩下3个宝石,拿的人一定会选择拿3个(必胜点W)
    4 想象剩下4个宝石,拿的人无论拿几个,下一个人一定能选择拿完(必败点L)
    5 想象剩下5个宝石,拿的人一定会选择拿1个(必胜点W)
    6 想象剩下6个宝石,拿的人一定会选择拿2个(必胜点W)
    ...

    因此一定要使得最后剩下为4的倍数 。A必胜策略:让A先选,只需要第一轮取走数目为13的那堆宝石中的1个,使得B无论怎样选,A在B选之后保持宝石堆剩下数目为4的倍数即可获胜。

    1. 从数字集合{1,2,3,4,…,20}中选出4个数字的子集,如果不允许两个相连的数字出现在同一集合中,那么能够形成多少个这种子集?

    思路:逆向思维,排列组合问题,编程解决
    1 一共C_{20}^4种子集
    2 找出存在相连数字的子集(编程实现:检索)
    3 相减即为不存在相连数字的子集

    # R语言实现过程
    total <- choose(20, 4)  # 总个数
    df <- t(combn(20, 4))   # 排列组合可能性,每行代表20个选4个的一种情形
    
    continue.test <- function(vec){  # 检测是否存在连续的元素
      any((vec + 1) %in% vec)
    }
    
    continue.exist <- sum(apply(df, 1, continue.test))  
    # 计算连续子集的总数目
    
    total - continue.exist
    # 相减即为没有连续数字出现的数目2380
    

    最后得出答案为2380

    1. 将4个不一样的球随机放入5个杯子中,则杯子中球的最大个数为3的概率是?

    思路:逆向思维,排列组合问题,可直接计算求解

    1. 一共54 = 625种
    2. 杯子中球的最大个数为3,说明4个球一共只占据了2个杯子,数目分别为1个和3个。本题答案即为2只杯子的组合数乘4个不同球分为两堆(有序)的组合数。
    3. C_5^2 = 10,说明选择杯子共10种情况,4个不同球分为1+3有C_4^1=4种,由于2个杯子存在先后顺序,可得本题答案为10*4*2/625 = 80/625 = 16/125。

    参考:

    1. 牛客网网易数据分析实习试题2018
    2. 博弈思路

    相关文章

      网友评论

          本文标题:网易数据分析实习试题2018-部分解题思路

          本文链接:https://www.haomeiwen.com/subject/hlhxxhtx.html