首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给出一个按字母顺序表示可能的朋友的图表、程序

问给出一个按字母顺序表示可能的朋友的图表、程序
EN

Stack Overflow用户
提问于 2022-04-29 13:19:20
回答 1查看 53关注 0票数 0

我是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

输出:

“无朋友”

到目前为止,我针对这个问题的代码是这样的,因为我还不能解决这个问题。代码:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-29 15:31:40

你的开局很好。friends_of_friends字典包含获得结果所需的所有信息。friends_of_friends字典为每个人包含了他/她与Mussum的共同朋友的数量。然后,您只需要检查该数字是否符合要求,然后添加一些逻辑,以确保您按字母顺序返回可能的朋友,并且例如,您不会将Mussum报告为他自己的可能朋友。可能的解决方案如下所示:

代码语言:javascript
复制
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")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72058625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档