场景:有N张图片,M种图片类型,每张图片可以同时属于1-M种类型。现要把N张图片按照类型分配,使得每种类型的图片数量差不多。
请高手们给个思路。多谢啦~
平均数= N/M,然后统计每个图片的类型数,分配的时候优先分配类型少的,比如从只有一个类型的分配,接着从2,3,4中类型的分配,同时注意,类型中分配的图片少的优先分配,最后根据许愿进行微调
总数 div 人数 = 整除后的结果 a这样每人先分 a 个总数 mod 人数 = 取模后的结果 b从第一个人开始,每人一个,直到第b个人算法结果:10份分三个人 , 每人先分 10div 3 = 3个, 剩余 10mod3 = 1个,只能给一个人,这样结果 为 4,3, 32份分三个人,每人先分 2div3= 0个,剩余 2mod3 = 2个,依次分 1, 1, 0。结果为 1, 1, 0总结:主要是整除运算和取模运算,以及for循环的使用
感觉提的问题不够清楚。
按照提的问题看,每张图片可以同时属于1-M种类型的话。那么让N张图片的每一张同时属于M中类型就完事了。这样每种类型的图片数量都为N
第一步,统计1-M种类型,每个类型所包含的图片个数nPic;
第二步,在包含图片最多的类型中选择某种图片n(1<n<N),将n转移到包含图片最少的类型中,之后重复第一步和第二步,直至将所有图片都转移完成;
这种方法迭代进行,很多细节还需要确定。希望对你有帮助。
每张图片可同时属于不同类型,那就先将图片可属种类数量从小到大排序。
然后按图片序号从小到大添加类型标识,当每种类型都有图片时,添加类型标识时将按照类型所含图片数从小到大添加。
如此一来,就能基本满足你的要求。