在Python中找出家庭中的继承顺序的程序

在Python中找出家庭中的继承顺序的程序

假设有一个家庭,由不同世代的成员组成。例如,家庭有一个父亲、他的孩子和他们的祖母。但是,在每个家庭中都会有出生和死亡事件。

家庭中最年长的成员被认为是家庭的头。所以当“头”成员去世时,他们的直系继承人或他们的孩子将成为新的头。我们实现了三个函数,第一个函数用于一个孩子出生在家庭中。该函数将父母姓名和孩子姓名作为输入,并将它们添加到记录中。

第二个函数用于有人去世的情况。它以逝者的家庭成员的姓名为输入,并将其从记录中删除。

第三个函数给出了继承顺序。当它被调用时,它会打印出当前的继承顺序。

因此,对于一组输入,我们必须找出继承顺序。 例如,如果输入的顺序是出生,出生,出生,出生,出生,死亡,继承,死亡,继承,则输出将是[‘Zach’、’Jesse’、’Ursula’、’Ryan’、’Thea’] [‘Jesse’、’Ursula’、’Ryan’、’Thea’]。

首先,这个家庭的头是Paul。 然后Paul分别有两个孩子,Zach和Jesse。 然后,Jesse有三个孩子,Ursula、Ryan和Thea,Ursula是最年长的,Thea是最年轻的。 然后,Paul去世了。继承顺序是[‘Zach’、’Jesse’、’Ursula’、’Ryan’、’Thea’]。 然后,Zach去世了,继承顺序变成了[‘Jesse’、’Ursula’、’Ryan’、’Thea’]。

为了解决这个问题,我们将按照以下步骤进行−

  • family:= 包含列表的新地图

  • head:= 家庭的当前头

  • dead:= 一个集合

  • 定义一个函数birth()。这个函数将p_name、c_name作为输入。

    • 在family[p_name]的末尾插入c_name
  • 定义一个函数death()。这将拿到名称。
    • add(name)到dead集合中
  • 定义一个函数inheritance()。这将拿到
    • ans:=一个新列表

    • depth_search(head)

    • return ans

  • 定义一个函数depth_search()。这将拿到当前

    • 如果当前不在dead中,则
      • 在ans的末尾插入当前
    • 对于family[current]中的每个孩子,执行以下操作
      • depth_search(child)

示例

让我们看看以下实现,以更好地理解。

“`python from collections import defaultdict
class Solution:

<pre><code> def __init__(self, head_name):
self.family = defaultdict(list)
self.head = head_name
self.dead = set()

def birth(self, p_name, c_name):
self.family[p_name].append(c_name)

def death(self, name):
self.dead.add(name)

def inheritance(self):
self.ans = []
self.depth_search(self.head)
return self.ans

def depth_search(self, current):
if current not in self.dead:
self.ans.append(current)
for child in self.family[current]:
self.depth_search(child)

ob = Solution('Paul')
ob.birth('Paul', 'Zach')
ob.birth('Paul', 'Jesse')
ob.birth('Jesse', 'Ursula')
ob.birth('Jesse', 'Ryan')
ob.birth('Jesse', 'Thea')
ob.death('Paul')
print(ob.inheritance())
ob.death('Zach')
print(ob.inheritance())
</code></pre>

<pre><code class="line-numbers">## 输入
“`python ob = Solution(‘Paul’)
ob.birth(‘Paul’, ‘Zach’)
ob.birth(‘Paul’, ‘Jesse’)
ob.birth(‘Jesse’, ‘Ursula’)
ob.birth(‘Jesse’, ‘Ryan’)
ob.birth(‘Jesse’, ‘Thea’)
ob.death(‘Paul’)
print(ob.inheritance())
ob.death(‘Zach’)
print(ob.inheritance())

输出

“`python [‘Zach’, ‘Jesse’, ‘Ursula’, ‘Ryan’, ‘Thea’]
['Jesse', 'Ursula', 'Ryan', 'Thea']
“`

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程