最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 遇到一道很难的算法题,大家来分析分析

    正文概述 掘金(DevUI团队)   2021-07-24   529

    DevUI 是一款面向企业中后台产品的开源前端解决方案,它倡导沉浸灵活至简的设计价值观,提倡设计者为真实的需求服务,为多数人的设计,拒绝哗众取宠、取悦眼球的设计。如果你正在开发 ToB工具类产品,DevUI 将是一个很不错的选择!

    遇到一道很难的算法题,大家来分析分析

    题目描述

    题目大意是这样的: 有num台机器,它们会互发信号singal,发送的信号被对方接收,就能得到10点贡献值。

    发信号的规则有以下几条:

    • 单发

    机器1给机器2发一个信号17可以表示成[1, 2, 17],如果机器2没有该信号数据,则机器2必须接收,并且返回1,并且由于机器1发送信号成功,可以增加10个贡献值;如果机器2有该数据,则不接收,返回0

    • 群发

    机器2给所有机器群发信号29可以表示成[2, 29],没有该信号的机器都必须选择接收,假设有n台机器接收,那么返回n,并且机器2的贡献值增加10*n

    • 贡献传递

    机器1给机器2发送一个信号15,机器2接收,那么机器1贡献值+10

    机器2再将信号15发送给机器3,机器3接收,那么机器1/2贡献值都将+10

    机器3再将该信号发送给机器4,机器4接收,那么机器1/2/3贡献值都+10

    注意:发送不存在的信号,说明系统没有,此时发送者自动会增加该信号。

    输入:

    • process 执行流程的二维数组,第一个流程是固定的,用来初始化n台机器:[[n], ...]

    输出:

    • result 返回结果是一个一位数组,数组项是每个流程的返回值,第一个返回结果是固定的:[null, ...]

    用例一

    input
    [[3], [1, 2, 17], [2, 29], [2]]
    
    output
    [null, 1, 2, 20]
    
    分析:
    [3] 说明有3台机器,返回[null]
    [1, 2, 17] 机器1发送17给机器2,1/2都没有17,此时2接收,并且1/2都有信号17,1贡献值+10,返回1
    [2, 29] 机器2群发29给所有机器,机器1/3都没有29,都接收,并且1/2/3都有29,2贡献值+20,返回2
    [2] 查询机器2的贡献值,返回20
    
    最终贡献值:
    机器1:10
    机器2:20
    机器3:0
    

    用例二

    input
    [[4], [1, 2, 15], [2, 3, 15], [3, 4, 15], [1], [2, 4, 37], [2, 37], [2], [3, 4, 37], [1], [3], [4]]
    
    用例分析:
    [4] 4台机器,返回null
    [1, 2, 15] 1给2发15,1贡献值+10,返回1
    [2, 3, 15] 2给3发15,1/2贡献值都+10,返回1
    [3, 4, 15] 3给4发15,1/2/3贡献值都+10,返回1
    [1] 查询1贡献,返回30
    [2, 4, 37] 2给4发37,2贡献值+10,返回1
    [2, 37] 2群发37,1/3接收,2贡献值+20,返回2
    [2] 查询2贡献值,返回50
    [3, 4, 37] 3给4发37,4已经有了,不接收,返回0
    [1] 查询1贡献值,返回30
    [3] 查询3贡献值,返回10
    [4] 查询4贡献值,返回0
    
    贡献值:
    机器1:30
    机器2:50
    机器3:10
    机器4:0
    
    output
    [null, 1, 1, 1, 30, 1, 2, 50, 0, 30, 10, 0]
    

    代码:

    class SingalProcess {
      constructor(num) { // 初始化机器 [num]
        // code
      }
      sendSingal(machine1, machine2, singal) { // 单发信号 [1, 2, 15]
        // code
      }
      sendSingalToAll(machine, singal) { // 群发信号 [2, 29]
        // code
      }
      queryContribution(machine) { // 查询贡献值 [1]
        // code
      }
    }
    

    解答?

    求算法勇士帮忙解答。


    起源地下载网 » 遇到一道很难的算法题,大家来分析分析

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元