使用Python查找得到食品包装的人数的程序
假设在一次会议中,有两种类型的人。第一种人喜欢素食午餐,而另一种人则喜欢荤食午餐。但是食品包装的数量有限,如果素食者收到荤食包装或反之亦然,则他们不会拿走该包装并等到自己喜欢的包装。因此,这两种不同类型的包装和人分别用数字0表示素食和1表示荤食。现在我们有两个数组,一个包含n个食品包装指定为0和1,另一个包含m个人排队等待,他们的喜好用0和1表示。因此,如果一个人没有得到他们喜欢的包装,他们就会重新排队并等待他们喜欢的包装。因此,我们必须查找没有食品包装的人数,以便我们可以安排他们喜欢的包装。
因此,如果输入为people =[0,1,1,0], packets = [0, 1, 0, 0],那么输出将为1。
因此,两个人喜欢荤食,而只有一个荤食包。排在首位的那个喜欢荤食的人拿到了这个包装,另一个人正在等待,因为没有其他荤食包。因此,输出为1。
为了解决这个问题,我们将按照以下步骤进行——
- temp_arr:包含值为0和0的新列表
-
对于people中的每个人,请执行以下操作:
- temp_arr [person]:= temp_arr [person] +1
- k: = 0
-
while k < packets大小时,请执行以下操作:
- 如果temp_arr [packets [k]]> 0,那么
- temp_arr [packets [k]]:= temp_arr [packets [k]]-1
- 否则,
- 退出循环
- k: = k +1
- 如果temp_arr [packets [k]]> 0,那么
-
返回size of packets – k
例子
让我们看一下以下实现,以便更好地理解–––
def solve (people,packets):
temp_arr = [0,0]
for person in people:
temp_arr [person] + = 1
k = 0
while k 0:
temp_arr [packets [k]]-= 1
else:
break
k + = 1
返回len(packets)- k
print(solve([0,1,1,0],[0,1,0,0]))
输入
[0,1,1,0],[0,1,0,0]
输出
1