Advertisement
cdsatrian

Odd Case

Jun 25th, 2014
337
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 0.99 KB | None | 0 0
  1. <pre>
  2. <?php
  3. function kombinasi($member,$num){
  4.   $n = count($member);  
  5.   //jumlah total kombinasi yang mungkin
  6.   $total = pow(2, $n);
  7.   $list =array();
  8.   //Loop untuk setiap kombinasi yang mungkin
  9.   $k=0;
  10.   for ($i = 0; $i < $total; $i++) {  
  11.     $list[$k]=array();
  12.     //Untuk setiap kombinasi, dicek untuk setiap bit
  13.     for ($j = 0; $j < $total; $j++) {  
  14.        //apakah data bit $j ada pada bit $i?  
  15.         if ((pow(2, $j) & $i)) $list[$k][]=$member[$j];      
  16.     }
  17.     if(count($list[$k])==$num){
  18.       //jika jumlah anggota sama dengan jumlah yang diinginkan increment $k
  19.       $k++;
  20.     }else{
  21.       //jika tidak sesuai, hapus array $list[$k]
  22.       unset($list[$k]);
  23.     }
  24.   }
  25.   return $list;
  26. }
  27.  
  28. $input=array(1,2,3,4,5);
  29. $n=4;
  30. $kombinasi=kombinasi($input,$n);
  31. $hasil=0;
  32. foreach($kombinasi as $k)
  33. {
  34.   if(in_array(2,$k)) //<-- tricky/weird :(
  35.   {
  36.     $hasil+=array_sum($k);
  37.   }
  38. }
  39. $data=array('input'=>$input,'kombinasi'=>$kombinasi,'hasil'=>$hasil);
  40. print_r($data);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement