2017-08-16 18 views
3

私はホテルに泊まりたいと思う人々の次の組み合わせがあると考えられます。私は子供が部屋に一人ですることはできません上記に基づいて選択することができる部屋の異なる組み合わせのすべてをうまくすることができますどのようにホテルの部屋にいる人のすべての可能な組み合わせを計算する

  • 大人3名
  • 6子供

とすべての人々を使用する必要がありますか? (注:これはPHPアプリケーションにあります)。

たとえば、上記のように分類できます。

  • 1と
  • 2部屋でみんなと一緒に部屋。
    • 1人の大人6人の子供
    • 1人の大人0子供
  • 2部屋付き。
    • 1大人5人の子供
    • 大人1名子供1
  • 等...

理想的には、これはの線に沿ってデータ構造を生じるはずです。

[ 
    // Room combination 
    [ 
     // Individual Room 
     [ 
      'adults' => 3, 
      'children' => 6 
     ] 
    ], 
    [ 
     [ 
      'adults' => 2, 
      'children' => 5 
     ], 
     [ 
      'adults' => 1, 
      'children' => 0 
     ] 
    ] 
] 

私は大人を扱う次のコードを持っていますが、私はこの中に子供の概念を導入する方法を考えることはできません。

public function partition($left, $last = 1, $ar = [], &$partitions = []) 
    { 
     if ($left == 0) { 
      array_push($partitions, $ar); 
     } 

     for ($n = $last; $n <= $left; $n++) { 
      $b = $ar; 
      array_push($b, $n); 
      array_merge($partitions, $this->partition($left - $n, $n, $b, $partitions)); 
     } 
     return $partitions; 
    } 
+0

からコピー

function perm($pool,$result=array()) { if(empty($pool)) { echo implode(' ',$result).'<br>'; }else { foreach($pool as $key => $value) { $neuerpool = $pool; $neuerresult = $result; $neuerresult[]= $value; unset($neuerpool[$key]); perm($neuerpool,$neuerresult); } } } perm(array('der hund ','übersprang ','den graben ','mit einem weiten sprung ')); 

? –

+0

最大個室数は大人の人数で区切られています。子供は一人もいないため、 –

+0

@MasivuyeCokileこれは、グループ内に大人がいることを前提としています(すべての可能な組み合わせを計算しているだけです) –

答えて

関連する問題