阿里笔试——小动物崇拜

这道题考试的时候我就完全没看懂,一直在纠结为什么不对。。。结果第二题也没写。后来根据面试的小哥哥才明白是啥意思。。。。

题目大意:

有n只小动物,序号按能力值大小排序(从1开始,序号越小能力值越强),现在森林选举,每个小动物需要上报自己的崇拜对象,会投和崇拜对象一样的票【就这句最坑。。。】,没崇拜者就只给自己投票,求每个小动物得的最大票数。

小哥哥说这题的意思是如果 1 2 3 三只小动物,崇拜对象为0,1,1 ,最后结果为3,0,0,即每个小动物的选择和它崇拜的小动物相同

输入

n(小动物数量)
n个数 (每个小动物的崇拜对象的序号,0为没有崇拜者)

输出

n个数(小动物所得票数)

题明白了就很简单了。。。从后遍历即可

import sys

if __name__ == "__main__":
    # 读取第一行的n
    n = int(sys.stdin.readline().strip())
    line2 = sys.stdin.readline().strip()
    values = list(map(int, line2.split()))
    values1 = [1]*n
    for i in range(n-1,-1,-1):
        if not values[i]==0:
            values1[values[i]-1]+=values1[i]
            values1[i]=0
    print(values1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值