【发布时间】:2008-11-26 22:38:35
【问题描述】:
我觉得应该是很简单明了的东西,只是卡在这个上面半个小时就走不动了。
我只需要根据元素索引将一个元素数组分成 N 个组。
例如,我们有一个包含 30 个元素 [e1,e2,...e30] 的数组,必须像这样分成 N=3 组:
group1: [e1, ..., e10]
group2: [e11, ..., e20]
group3: [e21, ..., e30]
我为 N=3 想出了像这样令人讨厌的混乱(伪语言,我在 0 和 1 上留下乘法只是为了澄清):
for(i=0;i<array_size;i++) {
if(i>=0*(array_size/3) && i<1*(array_size/3) {
print "group1";
} else if(i>=1*(array_size/3) && i<2*(array_size/3) {
print "group2";
} else if(i>=2*(array_size/3) && i<3*(array_size/3)
print "group3";
}
}
但是正确的通用解决方案是什么?
谢谢。
【问题讨论】:
-
从这个问题中得到的最重要的教训是边界条件、短(人为)期限和缺乏单元测试是致命的组合。
-
你到底想做什么:分成 3 个较小的数组,或者打印“groupI” 30 次?