本帖最后由 john_lee 于 2016-9-9 01:33 编辑
大概给你写个一个例子,可以做到任意段顺序,简单起见时间粒度用的小时,你用分钟是类似的。
- #include <cstdint>
- #include <iostream>
- struct seg_t {
- int start;
- int end;
- };
- const seg_t seg[4] = {
- { 8, 12 }, { 12, 18 }, { 18, 22 }, { 22, 8 }
- };
- int main ()
- {
- int t;
- for (t = 0; t < 24; t++) {
- int i;
- for (i = 0; i < 4; i++) {
- int l = seg[i].end - seg[i].start;
- if (l < 0)
- l += 24;
- int t0 = t - seg[i].start;
- if (t0 < 0)
- t0 += 24;
- if (t0 < l)
- std::cout << t << ',' << i << std::endl;
- }
- }
- return 0;
- }
每判断一个时间段用了3个比较,貌似应该不能再少了。
|