按照每个人要求的个数降序排列
一年级 200人 每人要求分到:9个
二年级 100人 每人要求分到:8个
五年级 200人 每人要求分到:6个
三年级 200人 每人要求分到:5个
六年级 200人 每人要求分到:4个
四年级 100人 每人要求分到:3个然后依次发过去
水果的种类按个数升序排列起始状态
对水果按个数多少降序排
c d e b h i a j f g
700 700 650 600 600 600 550 500 500 500
发完一年级后
c d e b h i a j f g
700 700 650 600 600 600 550 500 500 500
-200
500 500 450 400 400 400 350 300 300 500 再对水果进行降序排
g c d e b h i a j f
500 700 700 650 600 600 600 550 500 500
500 500 500 450 400 400 400 350 300 300
发完二年级后
g c d e b h i a j f
500 500 500 450 400 400 400 350 300 300
-100
400 400 400 350 300 300 300 250 300 300
再对水果进行降序排
g c d e j f b h i a
400 400 400 350 300 300 300 300 300 250 再分五年级
g c d e j f b h i a
400 400 400 350 300 300 300 300 300 250
-200
200 200 200 150 100 100 300 300 300 250再对水果进行降序排
b h i a g c d e j f
300 300 300 250 200 200 200 150 100 100 再分三年级
b h i a g c d e j f
300 300 300 250 200 200 200 150 100 100
-200
100 100 100 50 0 200 200 150 100 100再对水果进行降序排
c d e j f b h i a g
200 200 150 100 100 100 100 100 50 0 再分六年级
c d e j f b h i a g
200 200 150 100 100 100 100 100 50 0
-200
0 0 0 50 0 0 100 100 50 0再对水果进行降序排
h i a j c d e j f b g
100 100 50 50 0 0 0 0 0 0 0
再分四年级
h i a j c d e j f b g
100 100 50 50 0 0 0 0 0 0 0
-100
0 0 0 0 0 0 0 0 0 0 0
一年级 200人 每人要求分到:9个
二年级 100人 每人要求分到:8个
五年级 200人 每人要求分到:6个
三年级 200人 每人要求分到:5个
六年级 200人 每人要求分到:4个
四年级 100人 每人要求分到:3个然后依次发过去
水果的种类按个数升序排列起始状态
对水果按个数多少降序排
c d e b h i a j f g
700 700 650 600 600 600 550 500 500 500
发完一年级后
c d e b h i a j f g
700 700 650 600 600 600 550 500 500 500
-200
500 500 450 400 400 400 350 300 300 500 再对水果进行降序排
g c d e b h i a j f
500 700 700 650 600 600 600 550 500 500
500 500 500 450 400 400 400 350 300 300
发完二年级后
g c d e b h i a j f
500 500 500 450 400 400 400 350 300 300
-100
400 400 400 350 300 300 300 250 300 300
再对水果进行降序排
g c d e j f b h i a
400 400 400 350 300 300 300 300 300 250 再分五年级
g c d e j f b h i a
400 400 400 350 300 300 300 300 300 250
-200
200 200 200 150 100 100 300 300 300 250再对水果进行降序排
b h i a g c d e j f
300 300 300 250 200 200 200 150 100 100 再分三年级
b h i a g c d e j f
300 300 300 250 200 200 200 150 100 100
-200
100 100 100 50 0 200 200 150 100 100再对水果进行降序排
c d e j f b h i a g
200 200 150 100 100 100 100 100 50 0 再分六年级
c d e j f b h i a g
200 200 150 100 100 100 100 100 50 0
-200
0 0 0 50 0 0 100 100 50 0再对水果进行降序排
h i a j c d e j f b g
100 100 50 50 0 0 0 0 0 0 0
再分四年级
h i a j c d e j f b g
100 100 50 50 0 0 0 0 0 0 0
-100
0 0 0 0 0 0 0 0 0 0 0
Array f->水果的数组 f[i] 表示该种水果当前的数量
indexF->sort(indexF)使indexF 按f[i]值 降序排列Array g->要发水果的年级数组 g[i]表示该年级每个学生所要发的水果数
indexG->sort(indexG)使indexG按g[i]值降序排列当前年级 gCurrent -> indexG[0];
do
给当前年级发所需的n种水果,(如果当前的某种水果数不足所需的数量,后面一种补充上来,并 且要保证后面一种只发一次) (上面的例子中发六年级的时候可能处理不妥,即e 150 ,j100,)发完所需的200之后,j的50 不能再发)
f[i]->f[i]减去已经发的水果
indexF->sort(indexF) while 所有年级还没有发完
按照每个人要求的个数降序排列
一年级 200人 每人要求分到:9个
二年级 100人 每人要求分到:8个
五年级 200人 每人要求分到:6个
三年级 200人 每人要求分到:5个
六年级 200人 每人要求分到:4个
四年级 100人 每人要求分到:3个水果的种类按个数降序排列
c d e b h i a j f g
700 700 650 600 600 600 550 500 500 500
按年级分发,每发一人水果的种类按个数降序排列一次,
依次去所需水果种类个数这样效率低了一点,但算法简单一些
h i a j c d e j f b g
100 100 50 50 0 0 0 0 0 0 0
-100
0 0 0 0 0 0 0 0 0 0 0
了么?