$v _arr = Array (11,21,31,33,43,53,55,65); $w _arr = Array (1,11,21,23,33,43,45,55); $n = count ($w _arr); Test output Var_dump (BKNAP1 (110)); Var_dump (Bound (139,89,7,110)); function bound ($v, $w, $k, $W _total) { Global $v _arr, $w _arr, $n; $b = $v; $c = $w; Var_dump ($W _total); Var_dump ($n); Var_dump ($k); Var_dump ($v); Var_dump ($w); Die for ($i = $k +1; $i < $n; $i + +) { $c = $c + $w _arr[$i]; Var_dump ($W _total); Var_dump ($c); if ($c < $W _total) $b + = $v _arr[$i]; else{ Var_dump (($c-$W _total)/$w _arr[$i]) * $v _arr[$i]); $b = $b + (n ($c-$W _total)/$w _arr[$i]) * $v _arr[$i]; return $b; } } /*var_dump ('------bound head '); Var_dump ($K); Var_dump ($b); Var_dump ('------bound end '); */ return $b; } function Bknap1 ($W _total) { Global $v _arr, $w _arr, $n; $CW = $CP = 0; $k = 0; $fp =-1; while (true) { while ($k < $n && $CW + $w _arr[$k]<= $W _total) { $CW + = $w _arr[$k]; $CP + = $v _arr[$k]; $Y _arr[$k] = 1; $k +=1; } Var_dump ($CW), Var_dump ($CP), Var_dump ($Y _arr), Var_dump ($k); Var_dump ($n); if ($k = = $n) { $fp = $CP; $FW = $CW; $k = $n-1; $X _arr = $Y _arr; Bound ($CP, $CW, $k, $W _total); Var_dump (Bound ($CP, $CW, $k, $W _total), $fp, $k);d ie; Var_dump ($FP), Var_dump ($FW), Var_dump ($Y _arr), Var_dump ($k); Var_dump ($n); }else{ $Y _arr[$k] = 0; } Var_dump ($Y _arr); Var_dump ($k); Var_dump ($n);//die; Var_dump (Bound ($CP, $CW, $k, $W _total), $fp);d ie; while (Bound ($CP, $CW, $k, $W _total) <= $fp) { while ($k >=0 && $Y _arr[$k]!=1) { $k-= 1; } if ($k <0) { return $X _arr; } Var_dump ($K); $Y _arr[$k] = 0; $CW-= $w _arr[$k]; $CP-= $v _arr[$k]; } $k + = 1; } } ?> |