举个例子 小明、小黄 小丽 三个人 来个一个苹果分给小明。然后又来个苹果分给小黄.... 假如苹果少的话只有1个 走这循环分给小明或排在前面的人 现在要做 下次分苹果时分给小明后面的人 现在做了一个记录表 每次循环完的最后一条数据记录在表中然后循环时从这条记录开始之后的开始循环----思路有了 但是程序具体怎么实现、、
你这表是数据库还是外置文档
如果你知道是小明,小黄,小丽三个人或者已知的人数,每次苹果数量变化的时候,用苹果数量除以人数,根据余数不就可以知道这次应该分给谁了吗?
记录表中标记三个人是否得到苹果。例如用status 字段标记yes代表已经有苹果了,no代表还没有;
List 类型peoples代表三个人的列表(List中是有顺序的),里面放的三个people对象(小明/小黄/小丽):
得到一个苹果后:
for(People p : peoples){
if("no".equals(p.status)){
p.setStatus("yes");
}
}
完事。。。如果有其他条件 请在此循环基础上添加
不管是分苹果还是做游戏,这都是约瑟夫环问题,自己google下就有结果。
人数不固定的话,那是否可以知道每次人数变化之前的人数。比如,原先x个人,n个苹果,现在增加了y个人,又来了m个苹果,通过计算
(n%x + m)%(x+y)
n%x是人数增加前最后分到苹果的人
(n%x + m)是来了m个苹果时,推算出按第一个人开始算分配的苹果数
(x + y)增加人数后,现在要分苹果的人数