0

我有一个 google doc 电子表格,其中包含有关组中每个成员在一周中的特定时间会面的信息。一周内需要举行多次会议,小组的不同成员需要参加某些会议。我需要一种基于此生成时间表的方法,以便大多数成员可以参加每个会议。任何会议都不能在同一时间段内举行。

该表包含发生的每个会议的一行。每列代表可以举行会议的时间段(例如,周一下午 6:30-8:00)。与某个会议和某个时间段对应的单元格包含一个数字,表示可以参加每个会议的人数。如果单元格包含与注册会议的成员数量相同的数字,则该单元格会被谷歌文档自动突出显示。

我试图通过使用谷歌文档的脚本功能来解决这个问题,但我无法弄清楚算法。我真正需要的是一些伪代码,我可以编写它。

假设在我的脚本中,我有一个单元格的二维数组,以及一个与单元格是否突出显示相对应的二维布尔数组(意味着最多成员可以出席)

以下是该表的示例:

|Meeting    |Mon 6:30-8:30pm |Mon 8:30-10:30pm |Tue 6:30-8:30pm |Tue 8:30-10:30pm |
|-----------|----------------|-----------------|----------------|-----------------|
|Meeting 1  |7               |9                |8               |6                |
|Meeting 2  |3               |5                |1               |4                |
|Meeting 3  |10              |15               |12              |8                |
|-----------|----------------|-----------------|----------------|-----------------|

谢谢您的帮助!

4

1 回答 1

0

假设我明白你在说什么,你将不得不首先选择安排会议的顺序。我能想到的最好方法,考虑到听起来一切都是平等的,首先选择最多人可以参加的会议:

firstScheduled = max(max(meeting1), max(meeting2), max(meeting3));

之后,查看剩余的会议,看看哪个会议在当前未安排的日子里出席率最高:

foreach meeting as m
    foreach day as d
        if d is currently scheduled
            m = 0  // set all attendees to 0; no one can come, since the'll be
                   // at the other meeting
        end if
    end for

    highestAttendanceDate = max(meeting1)
end for

然后重复一遍,直到安排好所有会议。

于 2011-04-15T20:11:32.887 回答