使用Python分配重复整数的程序
假设我们有一个名为nums的数组,其中最多有50个唯一值。我们还有另一个名为quantity的数组,其中quantity[i]表示第i个用户订购的值的数量。我们必须检查是否可能分配nums,使得
- 第i个客户正好获得quantity[i]项,
-
第i个客户获得的值全部相等,且
-
所有用户都满意。
因此,如果输入如下nums = [5,1,2,2,3,4,4,3,3] quantity = [2,2,3],则输出将为True,因为两个客户都想要每个两个元素,所以他们可以得到[2,2]和[4,4],第三个客户想要三件物品,他们可以得到[3,3,3],因此所有客户都满意。
为了解决这个问题,我们将按照以下步骤进行 –
- 定义util()函数,该函数将使用i和cntr
-
如果i与quantity的大小相同,则
- 返回True
- temp_counter:制作cntr的副本
-
对于cntr中的每个cnt,执行以下操作
- 如果cnt> = quantity[i],则
- temp_counter[cnt]:-1
-
如果temp_counter[cnt]与0相同,则
-
从temp_counter中删除第cnt个元素
-
rem:cnt – quantity[i]
-
temp_counter[rem]:+1
-
如果util(i + 1,temp_counter)为true,则
-
返回True
-
temp_counter[rem]:-1
-
如果temp_counter[rem]与0相同,则
-
从temp_counter中删除第rem个元素
-
temp_counter[cnt]:+1
- 如果cnt> = quantity[i],则
-
返回False
-
从main方法开始,执行以下操作
-
cnt:保存nums中出现的数字的所有频率的频率的映射
-
以相反的顺序对quantity进行排序
-
返回util(0,cnt)
示例
让我们看一下以下实现,以获得更好的理解