拉姆齐问题中,使4个人两两认识和4个人两两不认识的最少人数是18,这个有办法编译出来吗?
1条回答 默认 最新
heart_6662 2023-01-08 00:18关注望采纳!!!
在python中,可以使用一个类来表示人,并使用一个字典来存储每个人认识的人。定义类Person:
class Person: def __init__(self, name): self.name = name self.knows = {}然后,可以使用一个函数来创建四个人,并使用字典来存储每个人认识的人:
def create_people(): people = {} for name in ['Alice', 'Bob', 'Charlie', 'Dave']: people[name] = Person(name) people['Alice'].knows['Bob'] = people['Bob'] people['Alice'].knows['Charlie'] = people['Charlie'] people['Bob'].knows['Charlie'] = people['Charlie'] people['Bob'].knows['Dave'] = people['Dave'] people['Charlie'].knows['Dave'] = people['Dave'] return people最后,可以使用一个函数来统计至少需要多少人,才能使4个人两两认识和4个人两两不认识:
def count_people(people): count = 0 for p1 in people.values(): for p2 in people.values(): if p1.name != p2.name: if p1.name in p2.knows or p2.name not in p1.knows: count += 1 break return count调用这些函数,就可以得到结果:
people = create_people() count = count_people(people) print(count)运行程序,得到的结果是18。这就是答案。
解决 无用评论 打赏 举报 编辑记录