题目描述:
动物之王
选动物老大,n个小动物,编号1-n,编号代表武力值,值越小,武力值越高,每个小动物都有一票投票权,可以投给自己或者自己崇拜的动物,或者和自己崇拜的动物跟票。
只能崇拜武力值比自己厉害的动物。
输入:第一行:n个动物 4
后面n行:
第几个小动物的崇拜对象 0 1 1 1
输出:每个小动物的最多的投票 4 1 1 1
解释:当第一个动物投自己 其余动物都投自己的崇拜的1号 那一号最多可以拿四票 然后其他动物如果都投自己 那么其余动物最多可以拿一票
def voute(con):
congbai=[0 ] #因为编号从1开始,所以首位不用
congbai.extend(con)
n = len(con)
f = [1 for i in range(n+1)] #初始化票数数组 编号从1到n ,f[0] 不用
# f[1] = 1
i =2
while i<=n:
# f[i]+=1
if congbai[i] == 0: #第一种情况 不崇拜其他动物
continue
else:
j = congbai[i] ##崇拜其他动物
while j!=0:
f[j]+=1 #给崇拜的动物投票
j = congbai[j] #跟票
i+=1
return f[1:]
con= [0,1,2,1] #初始崇拜数组
print(voute(con))
con = [0,1,1,1]
print(voete(con))