分组策略的算法
1:按確定的組數來分(要盡量使小組的人數平衡,此處用的是解二元一次方程組的辦法)
????????????????????????????????????????????iStudentTotal;//一個班的總的學生數
????????????????????????????????????????????iGroupNumber;//要分的組數
??????????????????????????????????????????? int iup = iStudentTotal / iGroupNumber+1;//取每組人數的上限值
??????????????????????????????????????????? int iDown = iStudentTotal / iGroupNumber;//取每組人數的下限值
??????????????????????????????????????????? int iupx = iStudentTotal - iDown * iGroupNumber;//x為小組人數為iup的小組的數目
??????????????????????????????????????????? int iCountSutdent = 0;//標記每個小組的人數
??????????????????????????????????????????? int iCountGroup = 1;//標記小組數目(到現在分了多少個組了)
??????????????????????????????????????????? int i = 1;//分配小組ID的號碼
??????????????????????????????????????????? group = new SGrid.APP.Group();
??????????????????????????????????????????? group.IGroupID = checkClass.IClassID * iBase + i++;
??????????????????????????????????????????? group.SGroupName = group.IGroupID.ToString() + "組";
??????????????????????????????????????????? group.Save();
??????????????????????????????????????????? checkClass.Link(group);
??????????????????????????????????????????? foreach (Student studentItem in lsStudent)
??????????????????????????????????????????? {
????????????????????????????????????????????????? if (iCountSutdent == iup&&iCountGroup <= iupx )
??????????????????????????????????????????????????? {
??????????????????????????????????????????????????????? iCountSutdent = 0;
??????????????????????????????????????????????????????? iCountGroup++;
??????????????????????????????????????????????????????? group = new SGrid.APP.Group();
??????????????????????????????????????????????????????? group.IGroupID = checkClass.IClassID * iBase + i++;
??????????????????????????????????????????????????????? group.SGroupName = group.IGroupID.ToString() + "組";
??????????????????????????????????????????????????????? group.Save();
??????????????????????????????????????????????????????? checkClass.Link(group);
??????????????????????????????????????????????????? }
??????????????????????????????????????????????????? else if (iCountSutdent == iDown&&iCountGroup >iupx)
??????????????????????????????????????????????????? {
??????????????????????????????????????????????????????? iCountSutdent = 0;
??????????????????????????????????????????????????????? iCountGroup++;
??????????????????????????????????????????????????????? group = new SGrid.APP.Group();
??????????????????????????????????????????????????????? group.IGroupID = checkClass.IClassID * iBase + i++;
??????????????????????????????????????????????????????? group.SGroupName = group.IGroupID.ToString() + "組";
??????????????????????????????????????????????????????? group.Save();
??????????????????????????????????????????????????????? checkClass.Link(group);??
??????????????????????????????????????????????????? }
???????????????????????????????????????????
??????????????????????????????????????????????? group.Link(studentItem);
??????????????????????????????????????????????? iCountSutdent ++;
??????????????????????????????????????????? }
????????????????????????????????????????????
??????????????????????????????????????? }
???????????????????????????????????????
2:按每組多少人來分(最后一組剩余多少人就算多少)
??????????????????????????????????? int i = 1;
??????????????????????????????????? int iCountStudent = 0;
??????????????????????????????????? group = new SGrid.APP.Group();
??????????????????????????????????? group.IGroupID = checkClass.IClassID * iBase + i++;
??????????????????????????????????? group.SGroupName = group.IGroupID.ToString() + "組";
??????????????????????????????????? group.Save();
??????????????????????????????????? checkClass.Link(group);
??????????????????????????????????? foreach (Student studentItem in lsStudent)
??????????????????????????????????? {
??????????????????????????????????????? if (iCountStudent == iGroupNumber)
??????????????????????????????????????? {
??????????????????????????????????????????? iCountStudent = 0;
??????????????????????????????????????????? group = new SGrid.APP.Group();
??????????????????????????????????????????? group.IGroupID = checkClass.IClassID * iBase + i++;
??????????????????????????????????????????? group.SGroupName = group.IGroupID.ToString() + "組";
??????????????????????????????????????????? group.Save();
??????????????????????????????????????????? checkClass.Link(group);
??????????????????????????????????????? }
??????????????????????????????????????? group.Link(studentItem);
??????????????????????????????????????? iCountStudent ++;
??????????????????????????????????? }
??????????????????????????????? }???????????????????????????????????????
轉載于:https://www.cnblogs.com/burandanxin/archive/2007/12/06/985673.html
總結
- 上一篇: 制造业如何将工人师傅的隐性技能转化为显性
- 下一篇: 突然感到很无聊当没有看书时