会场安排问题
2016-12-11 09:18
204 查看
#include <stdio.h> #define k 5 int time[5][2] = {1, 35, 12, 28, 25, 35, 27, 80, 36, 50}; /*思路:默认会场为k, 如果有活动A的开始时间 > 某活动B的结束时间, *如果是同一个会场,将一个会场A的结束的时间 = 会场B的结束时间, 会场B的时间全部赋成0,下次遍历通过>0里过滤掉 *这样两层循环下来就计算出了结果. * 需要安排的会场减一,*/ int count = k; void minMeetingCount() { int data[5][2]; for (int i = 0; i < k; i++) { for (int j = 0; j < 2; j++) { data[i][j] = time[i][j]; } } for (int i = 0; i < k; i++) { for (int j = 0; j < k; j++) { if (data[i][1] < data[j][0] && (data[i][1]-data[i][0]) > 0 && data[j][1] - data[j][0] > 0) { data[i][1] = data[j][1]; count--; data[j][0] = 0; data[j][1] = 0; } } } for (int i = 0; i < k; i++) { for (int j = 0; j < 2; j++) { printf("%d ", data[i][j]); } printf("\n"); } printf("%d", count); } int main() { minMeetingCount(); return 0; }