概述
题目3:
包含n个用户的朋友列表,对于一个指定用户,找出这个用户最可能认识的人。这个人与当前用户不是朋友,但有最多的共同好友。朋友之间的关系是相互的。如果两个用户都要同样多的共同好友,返回用户序号(从0开始)。如果和所有人都没有共同好友,返回-1.
输入描述:
用户数目 需要判断的用户序号
输出描述:
用户最可能认识的用户序号
输入:
5 0
1 2 3
0 4
0 4
0 4
1 2 3
输出:
4
思路1:将需要判断的用户和所有用户的共同好友计算,过滤掉自己的序号和已是共同好友的序号,得到共同好友最多的人。
n,id1 = map(int,input().split(' '))
tab = []
for i in range(n):
tab.append(list(map(int,input().split(' '))))
res = tab[id1] #取出需要判断的用户
out = []
for id_list in tab:
count = 0
for i in range(len(res)): 如果具有相同用户,加1
if res[i] in id_list:
count += 1
out.append(count)
out[id1] = 0 #需要判断的用户设为0
while True:
id_out = out.index(max(out)) #取最大值序号(当前共同好友最多的序号)
if id_out==0:
print(-1)
break
if id_out in res: #如果当前序号已经是好友,将该序号设为0,继续
out[id_out]=0
else:
print(id_out)
break
思路2:先过滤掉已经是好友的人的序号,计算剩下的人的与需要判断的用户序号的共同好友数,取出最大的。
n = 5
id_in = 1
tab = [[1,2,3],
[0,4],
[0,4],
[0,4],
[1,2,3]]
id_in_f = tab[id_in]
pos = -1
max_count = 0
for i in range(len(tab)):
if i in id_in_f or i==id_in :
continue
else:
for key in tab[i]:
count = 0
if key in id_in_f:
count += 1
if count > max_count:
max_count = count
pos = i
if max_count == 0:
print(-1)
else:
print(pos)
最后
以上就是阳光曲奇为你收集整理的拼多多2019算法 推荐好友(python)的全部内容,希望文章能够帮你解决拼多多2019算法 推荐好友(python)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复