2013-05-08 4 views
1

Я столкнулся с проблемой планирования,планирования матчей между командами алгоритма

У нас есть 9 teams..We нужно запланировать для каждой команды один матч с любой другой командой ..

Итак, мы имеем 4 матча каждый неделю в течение 9 недель ..

Теперь с помощью функции ниже, мы можем получить все матчи в комбинации 9c2

$matches = getCombinations(array(1, 2, 3, 4, 5, 6, 7, 8, 9), 2); 

function getCombinations($teams, $group_length) { 
    $teams_len = count($teams); 
    if($group_length == 1) { 
     $return = array(); 
     foreach($teams as $b){ 
      $return[] = array($b); 
     } 
     return $return; 
    } else { 
     //get one level lower combinations 
     $oneLevelLower = getCombinations($teams, $group_length-1); 

     //for every one level lower combinations add one element to them that the last element of a combination is preceeded by the element which follows it in base array if there is none, does not add 
     $newCombs = array(); 

     foreach($oneLevelLower as $oll){ 

      $lastEl = $oll[$group_length-2]; 
      $found = false; 
      foreach($teams as $key => $b){ 
       if($b == $lastEl){ 
        $found = true; 
        continue; 
        //last element found 
       } 
       if($found == true){ 
        //add to combinations with last element 
        if($key < $teams_len){ 

         $tmp = $oll; 
         $newCombination = array_slice($tmp,0); 
         $newCombination[]=$b; 
         $newCombs[] = array_slice($newCombination,0); 
        } 
       } 
      } 
     } 
    } 
    return $newCombs; 
} 

который возвращает все матчи ..

array (size=36) 
    0 => 
    array (size=2) 
     0 => int 1 
     1 => int 2 
    1 => 
    array (size=2) 
     0 => int 1 
     1 => int 3 
    2 => 
    array (size=2) 
     0 => int 1 
     1 => int 4 
    3 => 
    array (size=2) 
     0 => int 1 
     1 => int 5 
    4 => 
    array (size=2) 
     0 => int 1 
     1 => int 6 
    5 => 
    array (size=2) 
     0 => int 1 
     1 => int 7 
    6 => 
    array (size=2) 
     0 => int 1 
     1 => int 8 
    7 => 
    array (size=2) 
     0 => int 1 
     1 => int 9 
    8 => 
    array (size=2) 
     0 => int 2 
     1 => int 3 
    9 => 
    array (size=2) 
     0 => int 2 
     1 => int 4 
    10 => 
    array (size=2) 
     0 => int 2 
     1 => int 5 
    11 => 
    array (size=2) 
     0 => int 2 
     1 => int 6 
    12 => 
    array (size=2) 
     0 => int 2 
     1 => int 7 
    13 => 
    array (size=2) 
     0 => int 2 
     1 => int 8 
    14 => 
    array (size=2) 
     0 => int 2 
     1 => int 9 
    15 => 
    array (size=2) 
     0 => int 3 
     1 => int 4 
    16 => 
    array (size=2) 
     0 => int 3 
     1 => int 5 
    17 => 
    array (size=2) 
     0 => int 3 
     1 => int 6 
    18 => 
    array (size=2) 
     0 => int 3 
     1 => int 7 
    19 => 
    array (size=2) 
     0 => int 3 
     1 => int 8 
    20 => 
    array (size=2) 
     0 => int 3 
     1 => int 9 
    21 => 
    array (size=2) 
     0 => int 4 
     1 => int 5 
    22 => 
    array (size=2) 
     0 => int 4 
     1 => int 6 
    23 => 
    array (size=2) 
     0 => int 4 
     1 => int 7 
    24 => 
    array (size=2) 
     0 => int 4 
     1 => int 8 
    25 => 
    array (size=2) 
     0 => int 4 
     1 => int 9 
    26 => 
    array (size=2) 
     0 => int 5 
     1 => int 6 
    27 => 
    array (size=2) 
     0 => int 5 
     1 => int 7 
    28 => 
    array (size=2) 
     0 => int 5 
     1 => int 8 
    29 => 
    array (size=2) 
     0 => int 5 
     1 => int 9 
    30 => 
    array (size=2) 
     0 => int 6 
     1 => int 7 
    31 => 
    array (size=2) 
     0 => int 6 
     1 => int 8 
    32 => 
    array (size=2) 
     0 => int 6 
     1 => int 9 
    33 => 
    array (size=2) 
     0 => int 7 
     1 => int 8 
    34 => 
    array (size=2) 
     0 => int 7 
     1 => int 9 
    35 => 
    array (size=2) 
     0 => int 8 
     1 => int 9 

Но одна команда не может иметь два матча в день, и для каждой команды четыре игры требуется ..

Таким образом, мы должны организовать эти спички в неделю расписание таким образом, что каждую неделю 8 команды играют 4 матча, а одна команда оставлена ​​.. и для каждой команды есть четыре игры.

* PS Я не реализовал комбинированную функцию, ее скопировали с кем-то..thnx к нему..и мы используйте php, хотя я не думаю, что здесь имеет значение langage.

ответ

Смежные вопросы