我需要写一个算法(伪代码很好)来完成以下问题。
我们有一家超市杂货店的清单,例如3,000家。我们对每家商店的客流量排名得分从1到3,000。商店由索引号标识。
我们有多个商店清单(所有商店都是上述3,000家总清单的成员),用于我们希望开展的各种营销活动;每个商店只能展示一个广告系列。任务是将营销活动分配给商店,以便:
最多可以分配10个营销活动,并且它们之间可以有任意数量的重叠。
我已经创建了一种如下所示的算法。这可以成功地平衡人流等级,但是因为它以人流顺序进入商店清单,所以我们可能没有足够的商店供不应求。
当前方法如下:
此方法为不同的广告系列提供了完美的客流份额,但是由于每个广告系列在任何给定的广告系列列表和主商店列表之间的重叠都不同,因此广告系列有可能在店面耗尽之前就耗尽它想要的所有商店,即使有足够的商店-按步行顺序遍历它们时也不够,就像这种方法一样,将它们平均分配。
代码不相关,因为我会将正确的流程转换为JS。
使用当前算法的预期结果:
想象一下,广告系列1和2都想要100家商店。我们绘制了一个维恩图,该图表明考虑到所有重叠,对于1和2中的每一个,有足够的存储来满足100个存储。
所需结果:每个广告系列分配了100家商店。给定分配时,人流等级尽可能均等。
实际结果:广告系列1获得100家商店,广告系列2获得84家商店,客流量排名相同。
从Excel输出看,可以将商店从1交换到2,这样2可以得到100个商店,而1可以从只能携带活动1的商店充值。