这题可以考虑使用匈牙利算法:

n个数据视为二部图的一个集合,
8个桶视为二部图的另一个集合,
每个数据可以放的桶有限制,这就提供了数据和桶的连接信息(边)
那么我们的目标就是找出该二部图的最大匹配,也就是桶内数据最多,匈牙利算法没得跑了

当然,这里的桶(节点)有容量,应用匈牙利算法时还需要灵活修改一下