fork(2) download
  1. <?php
  2.  
  3. $n = 120; // сумма
  4.  
  5. $s = array(10, 60, 100); // множество монет
  6.  
  7. $r = []; // сортировочные варианты
  8.  
  9. for ($x = 0; $x < count($s); $x++) {
  10. for ($y = 0; $y < count($s); $y++) {
  11. $sum = $s[$y];
  12. if ($sum + $s[$x] > $n) {
  13. continue;
  14. }
  15. $r[$x][$y][] = $sum;
  16. while (true) {
  17. if ($sum + $s[$x] > $n) {
  18. break;
  19. }
  20. $sum += $s[$x];
  21. $r[$x][$y][] = $s[$x];
  22. }
  23. }
  24. }
  25.  
  26. $a = []; // возможные варианты
  27.  
  28. for ($x = 0; $x < count($r); $x++) {
  29. for ($y = 0; $y < count($r[$x]); $y++) {
  30. if (array_sum($r[$x][$y]) == $n) {
  31. $a[] = $r[$x][$y];
  32. }
  33. }
  34. }
  35.  
  36. $o = []; // оптимальные варианты
  37. $min = count($a[0]);
  38.  
  39. for ($x = 0; $x < count($a); $x++) {
  40. if (count($a[$x]) < $min) {
  41. $min = count($a[$x]);
  42. }
  43. }
  44.  
  45. for ($x = 0; $x < count($a); $x++) {
  46. if (count($a[$x]) == $min) {
  47. $o[] = $a[$x];
  48. }
  49. }
  50.  
  51.  
  52. ?>
Success #stdin #stdout 0.03s 82560KB
stdin
Standard input is empty
stdout
array(1) {
  [0]=>
  array(2) {
    [0]=>
    int(60)
    [1]=>
    int(60)
  }
}