使用 Python 找出获得食品包的人数的程序
假设在会议中,有两种人。第一类人喜欢素食午餐,另一类人喜欢非素食午餐。但是小包数量有限,如果素食者收到非素食小包,反之亦然;他们不会拿走那个包裹然后等到他们得到他们喜欢的那个。因此,两种不同类型的包和人被表示为0代表素食主义者和1代表非素食主义者。现在我们有两个数组,一个包含n个食物包,分别用0和1表示,另一个数组包含m个人的队列,他们的偏好用0和1表示。所以,如果一个人没有收到他们的首选数据包,他们在最后重新进入队列并等待他们的首选数据包。所以,
所以,如果输入像people=[0,1,1,0],packets=[0,1,0,0],那么输出就是1。
所以两个人更喜欢非蔬菜食品,而且只有一个非蔬菜包。第一个喜欢非蔬菜的人得到了那个包,另一个人继续等待,因为没有其他非蔬菜包。因此,输出为1。
示例
让我们看看以下实现以获得更好的理解-
def solve(people, packets): temp_arr = [0,0] for person in people: temp_arr[person] += 1 k = 0 while k < len(packets): if temp_arr[packets[k]]>0: temp_arr[packets[k]]-=1 else: break k += 1 return len(packets) - k print(solve([0,1,1,0], [0, 1, 0, 0]))
输入
[0,1,1,0], [0, 1, 0, 0]输出结果
1