在时间表中组合多个数组

时间:2013-10-08 20:20:41

标签: php

我需要一个解决方案如何查找计划的所有可能组合。有特定日期的课程可能会有所不同。有一个给定的周数。我需要找到所有可能组合的解决方案,包括所有课程,没有重叠。

$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 =>的数组。当然,像这样:

$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],
  ...
 )
);

我真的很困惑这个问题。非常感谢你的帮助。

0 个答案:

没有答案