1

我需要一个解决方案,如何找到时间表的所有可能组合。给定日期的课程可能因时长而异。有给定的周数。我需要为所有可能的组合找到一个解决方案,包括所有课程,没有重叠。

$courses = array ("A", "B", "C", "D");
$duration = array (2, 3, 1, 2); // duration of $courses (in weeks)
$start_dates = array (
  $courses[0] => array (1, 3, 5),
  $courses[1] => array (1, 2, 5, 6),
  $courses[2] => array (3, 4, 5, 9),
  $courses[3] => array (1, 4, 8));

我想获得所有可能的组合,例如:

Week | Course 
1    | A
2    | A
3    | C
4    | D
5    | D
6    | B
7    | B
8    | B
9    | -
10   | -

第二种组合例如是这样的:

Week | Course 
1    | A
2    | A
3    | -
4    | C
5    | B
6    | B
7    | B
8    | D
9    | D
10   | -

首选输出是带有 week => course 的数组,如下所示:

$combinations = array (
 0 => array (
  1 => $courses[0], 
  2 => $courses[0], 
  3 => $courses[2],
  4 => $courses[3],
  ...
 ),
 1 => array (
  1 => $courses[0], 
  2 => $courses[0], 
  4 => $courses[2],
  5 => $courses[1],
  6 => $courses[1],
  7 => $courses[1],
  ...
 )
);

我真的被这个问题困住了。非常感谢你的帮助。

4

0 回答 0