送交者: wasguru 于 2006-4-23, 02:46:38:
回答: 难题征答,优胜者奖励Y2X搜索原始股票,绝不食言:学生分班问题 由 甄上瘾 于 2006-4-23, 01:34:54:
算法如下:
0. 开始时每人单独一班。
1. 对任意一对班级,计算班级间的“距离”。这里“距离”定义为从两个班里各取一名学生,其最小的年龄差。
2. 如果距离小于等于“容错值”,则把这一对班级归并。
3. 重复1-2,直到所有的班级之间的“距离”都大于“容错值”。
因为不允许最后的结果为一人一班,所以允许的最小容错值必须大于学生间的最小年龄“阶梯”。
因为不允许最后的结果为全校一班,所以允许的最大容错值必须小于学生间的最大年龄“阶梯”。
所以,如果学生间的最小年龄“阶梯”与最大年龄“阶梯”相等,即学生的出生时间从小到大成等差数列,则问题无解。