Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <pre>
- <?php
- function kombinasi($member,$num){
- $n = count($member);
- //jumlah total kombinasi yang mungkin
- $total = pow(2, $n);
- $list =array();
- //Loop untuk setiap kombinasi yang mungkin
- $k=0;
- for ($i = 0; $i < $total; $i++) {
- $list[$k]=array();
- //Untuk setiap kombinasi, dicek untuk setiap bit
- for ($j = 0; $j < $total; $j++) {
- //apakah data bit $j ada pada bit $i?
- if ((pow(2, $j) & $i)) $list[$k][]=$member[$j];
- }
- if(count($list[$k])==$num){
- //jika jumlah anggota sama dengan jumlah yang diinginkan increment $k
- $k++;
- }else{
- //jika tidak sesuai, hapus array $list[$k]
- unset($list[$k]);
- }
- }
- return $list;
- }
- $input=array(1,2,3,4,5);
- $n=4;
- $kombinasi=kombinasi($input,$n);
- $hasil=0;
- foreach($kombinasi as $k)
- {
- if(in_array(2,$k)) //<-- tricky/weird :(
- {
- $hasil+=array_sum($k);
- }
- }
- $data=array('input'=>$input,'kombinasi'=>$kombinasi,'hasil'=>$hasil);
- print_r($data);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement