拉姆齐问题中,使4个人两两认识和4个人两两不认识的最少人数是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。这就是答案。