这道题考试的时候我就完全没看懂,一直在纠结为什么不对。。。结果第二题也没写。后来根据面试的小哥哥才明白是啥意思。。。。
题目大意:
有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)