我是python的初学者,在解决图上的练习时遇到了困难,练习如下:
给出一个表示社交网络关系的图表,创建一个按字母顺序列出“Mussum”可能的朋友的程序。要找到“Mussum‘s”可能的朋友,请考虑以下规则:至少有3共同朋友的两个人很有可能成为朋友,因此很有可能是朋友。
输入:
输入的第一行表示图中有多少n顶点(1≤n≤100)。下n行以格式表示顶点的信息:id、A、v1、v2、⋯、vA,其中id是标识顶点的字符串,A是连接到该顶点的边数,而vi≠id是标识idE 215的顶点的字符串。第一个id总是Mussum的。
出口:
按字母顺序显示Mussum的可能朋友,如果没有,则打印消息“无朋友”
例如,:
输入:
6
Mussum 3 Didi Dede Zacarias
Zacarias 5 Didi Dede Macale Mussum Sargento
Dede 5 Didi Macale Mussum Zacarias Sargento
Didi 5 Mussum Dede Macale Zacarias Sargento
Sargento 4 Didi Dede Zacarias Macale
Macale 4 Sargento Didi Dede Zacarias
输出:
马卡莱
萨根托
输入:
4.
Mussum 3 Sorvetao Conrado Dede
Dede 2 Sorvetao Mussum
Sorvetao 3 Mussum Conrado Dede
Conrado 2 Mussum Sorvetao
输出:
“无朋友”
到目前为止,我针对这个问题的代码是这样的,因为我还不能解决这个问题。代码:
graph = {}
for _ in range(int(input())):
v, A, *neighbor = input().split()
graph[v] = neighbor
friend_of_friends = {}
for friend in graph['Mussum']:
for friends_neighbor in graph[friend]:
if friends_neighbor in friend_of_friends:
friend_of_friends[friends_neighbor] += 1
else:
friend_of_friends[friends_neighbor] = 1发布于 2022-04-29 15:31:40
你的开局很好。friends_of_friends字典包含获得结果所需的所有信息。friends_of_friends字典为每个人包含了他/她与Mussum的共同朋友的数量。然后,您只需要检查该数字是否符合要求,然后添加一些逻辑,以确保您按字母顺序返回可能的朋友,并且例如,您不会将Mussum报告为他自己的可能朋友。可能的解决方案如下所示:
graph = {}
for _ in range(int(input())):
v, A, *neighbor = input().split()
graph[v] = neighbor
friend_of_friends = {}
for friend in graph['Mussum']:
for friends_neighbor in graph[friend]:
if friends_neighbor in friend_of_friends:
friend_of_friends[friends_neighbor] += 1
else:
friend_of_friends[friends_neighbor] = 1
likely_friends = []
for possible_likely_friend, mutual_friends_count in friend_of_friends.items():
# Skip checking if Mussum is a likely friend of himself
if possible_likely_friend == 'Mussum':
continue
# Do not report people that are already friends with Mussum as likely friends
if possible_likely_friend in graph['Mussum']:
continue
# If the person has at least 3 mutual friends with Mussum, add the person to the list
if mutual_friends_count >= 3:
likely_friends.append(possible_likely_friend)
# If there are some likely friends, first sort them alphabetically and then output
# them each on one line. If no likely friends, output "No friends".
if likely_friends:
likely_friends.sort()
for likely_friend in likely_friends:
print(likely_friend)
else:
print("No friends")https://stackoverflow.com/questions/72058625
复制相似问题