* Coins.php
<?php
/**
* Created by PhpStorm.
* User: Mch
* Date: 9/18/18
* Time: 10:38 PM
*/
class Coins {
/**
* @param array $arr
* @param int $aim
* @return int
*/
public static function count(Array $arr, /* int */ $aim) {
if (is_null($arr) || count($arr)==0 || $aim<0) {
return 0;
}
$n = $aim+1;
$dp = new \SplFixedArray($n);
// init
for ($j = 0; $j < $n; $j++) {
$dp[$j] = 0;
}
for ($j = 0; $arr[0] * $j <= $aim; $j++) {
$dp[$arr[0] * $j] = 1;
}
for ($i = 1; $i < count($arr); $i++) {
for ($j = 1; $j <= $aim; $j++) {
$dp[$j] += $j - $arr[$i] >= 0 ? $dp[$j - $arr[$i]] : 0;
}
}
return $dp[$aim];
}
}
* index.php
<?php
/**
* Created by PhpStorm.
* User: Mch
* Date: 9/18/18
* Time: 11:18 PM
*/
include './Coins.php';
$arr = [50, 20, 10, 5, 1];
$aim = 100;
$count = Coins::count($arr, $aim);
echo $count.PHP_EOL;
* test
$ php index.php
343