顺丰8-29号 数据分析 笔试编程大题

原题在这。
就AC掉64%
能想到比较简单的是,假设每个人最多会一种的情况下。
1、不同语言之间只要一个学习机即可让两批人都能交流,剩下一个语言都不会的,每人一个学习机即可。基于此。程序如下。
import sys
line = sys.stdin.readline().strip()
nmk = list(map(int, line.split()))
n = nmk[0]
m = nmk[1]
k = nmk[2]
lang = {}
ans = 0
for i in range(k):
    line = sys.stdin.readline().strip()
    uv = list(map(int,line.split()))
    u = int(uv[0])
    v = int(uv[1])
    if v not in lang.keys():
        lang[v] = 1
    else:
        lang[v] += 1

ans = len(lang.keys()) - 1
ans += n - sum(lang.values())

print(ans)

2、此外 ,一个人会多种语言的情况,这个情况下再细分为两种。
  • 会多种语言的人之间没有重复的语言,例如1 会 AB 语言,2会CD语言。那么就可以在一的情况中减少两个学习机,这个时候可以把AB、CD分别看成一个整体。两个整体之间就只需要一个学习机即可
  • 会多种语言的人之前有重复的语言, 例如1会AB,2会BC,或者1会ABC ,2会BCD   此时减去重复语言个数数量的学习机
但是这个时候的问题就来了,有可能两个人会的语言都大于1,且会的一样。这个数量就不好处理。
临界情况是想到了。但是写不出来。痛苦,有没有大神提供下思路。求解

#顺丰科技##数据分析师##笔试题目##校招##内推#
全部评论

相关推荐

11-18 15:57
门头沟学院 Java
最终归宿是测开:这个重邮的大佬在重邮很有名的,他就喜欢打92的脸,越有人质疑他,他越觉得爽😂
点赞 评论 收藏
分享
我也曾抱有希望:说的好直白
点赞 评论 收藏
分享
1 12 评论
分享
牛客网
牛客企业服务