m0_71528868 2023-01-07 23:24 采纳率: 33.3%
浏览 37
已结题

拉姆齐的R(4,4)=18用python有办法编译出来吗

拉姆齐问题中,使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。这就是答案。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月8日
  • 赞助了问题酬金20元 1月8日
  • 创建了问题 1月7日