- <?php 
- $total = 3.60; // valor total a ser testado 
- echo "Para um total de $total:\n\n"; 
- $dados = array('0.10','0.20','0.30','0.50', 
-                '3.00','3.30','4.00','5.00', 
-                '1.00','1.10','2.00','2.20'); 
- foreach ($dados as $d)  
- 	$dadosf[] = floatval($d); // cria array paralelo em float para facilitar 
-   
- for ($i = 0; $i < sizeof($dados) - 1; $i++)  
- 	$base[]=array($i); // cria os primeiros valores de base 
-   
- for ($n = 2;$n < sizeof($dados); $n++) { 
- 	foreach ($base as $i => $b1) { // soma os números de base 
- 		$soma_base[$i]=0; 
- 		foreach ($b1 as $b2) { 
- 			$soma_base[$i] += $dadosf[$b2]; 
- 		} 
- 	} 
- 	$base2 = []; 
- 	for ($b = 0; $b < sizeof($base); $b++) { 
- 		$u = sizeof($base[$b])-1; // último elemento da base 
- 		for ($p = $base[$b][$u] + 1; $p < sizeof($dados); $p++) { 
- 				echo 'Combinação ' . ++$c . ': '; 
- 				for ($d = 0; $d <= $u; $d++) {  
- 					echo $dados[$base[$b][$d]] . ' + '; 
- 				} 
- 				echo $dados[$p] . ' = ' . $total . "\n"; 
- 			} 
- 			$base2[] = $base[$b]; 
- 			$base2[sizeof($base2)-1][] = $p; 
-   
- 		} 
- 	} 
- 	$base = $base2; 
- } 
-   
				PD9waHAKJHRvdGFsID0gMy42MDsgLy8gdmFsb3IgdG90YWwgYSBzZXIgdGVzdGFkbwplY2hvICJQYXJhIHVtIHRvdGFsIGRlICR0b3RhbDpcblxuIjsKJGRhZG9zID0gYXJyYXkoJzAuMTAnLCcwLjIwJywnMC4zMCcsJzAuNTAnLAogICAgICAgICAgICAgICAnMy4wMCcsJzMuMzAnLCc0LjAwJywnNS4wMCcsCiAgICAgICAgICAgICAgICcxLjAwJywnMS4xMCcsJzIuMDAnLCcyLjIwJyk7CmZvcmVhY2ggKCRkYWRvcyBhcyAkZCkgCgkkZGFkb3NmW10gPSBmbG9hdHZhbCgkZCk7IC8vIGNyaWEgYXJyYXkgcGFyYWxlbG8gZW0gZmxvYXQgcGFyYSBmYWNpbGl0YXIKCmZvciAoJGkgPSAwOyAkaSA8IHNpemVvZigkZGFkb3MpIC0gMTsgJGkrKykgCgkkYmFzZVtdPWFycmF5KCRpKTsgLy8gY3JpYSBvcyBwcmltZWlyb3MgdmFsb3JlcyBkZSBiYXNlCgpmb3IgKCRuID0gMjskbiA8IHNpemVvZigkZGFkb3MpOyAkbisrKSB7Cglmb3JlYWNoICgkYmFzZSBhcyAkaSA9PiAkYjEpIHsgLy8gc29tYSBvcyBuw7ptZXJvcyBkZSBiYXNlCgkJJHNvbWFfYmFzZVskaV09MDsKCQlmb3JlYWNoICgkYjEgYXMgJGIyKSB7CgkJCSRzb21hX2Jhc2VbJGldICs9ICRkYWRvc2ZbJGIyXTsKCQl9Cgl9CgkkYmFzZTIgPSBbXTsKCWZvciAoJGIgPSAwOyAkYiA8IHNpemVvZigkYmFzZSk7ICRiKyspIHsKCQkkdSA9IHNpemVvZigkYmFzZVskYl0pLTE7IC8vIMO6bHRpbW8gZWxlbWVudG8gZGEgYmFzZQoJCWZvciAoJHAgPSAkYmFzZVskYl1bJHVdICsgMTsgJHAgPCBzaXplb2YoJGRhZG9zKTsgJHArKykgewoJCQlpZiAobnVtYmVyX2Zvcm1hdCgkc29tYV9iYXNlWyRiXSArICRkYWRvc2ZbJHBdLCAzKSA9PSBudW1iZXJfZm9ybWF0KCR0b3RhbCwgMykpIHsgLy8gKioqIGVuY29udHJvdSBjb21iaW5hw6fDo28gZGEgc29tYSAqKioKCQkJCWVjaG8gJ0NvbWJpbmHDp8OjbyAnIC4gKyskYyAuICc6ICc7CgkJCQlmb3IgKCRkID0gMDsgJGQgPD0gJHU7ICRkKyspIHsgCgkJCQkJZWNobyAkZGFkb3NbJGJhc2VbJGJdWyRkXV0gLiAnICsgJzsKCQkJCX0KCQkJCWVjaG8gJGRhZG9zWyRwXSAuICcgPSAnIC4gJHRvdGFsIC4gIlxuIjsKCQkJfQoJCQkkYmFzZTJbXSA9ICRiYXNlWyRiXTsKCQkJJGJhc2UyW3NpemVvZigkYmFzZTIpLTFdW10gPSAkcDsKCgkJfQoJfQoJJGJhc2UgPSAkYmFzZTI7Cn0K