TOTO 6/49 - Възможни комбинации

confiscate

Registered
Здравейте,
Бихте ли ми проверили логиката на кода и дало това е начина да намеря всички възможни комбинации на ТОТО 6/49.

Благодаря предварително!

Код:
 <?php
        for ($a = 1; $a <= 44; $a++) {
            for ($b = $a + 1; $b < 45; $b++) {
                for ($c = $b + 1; $c < 46; $c++) {
                    for ($d = $c + 1; $d < 47; $d++) {
                        for ($e = $d + 1; $e < 48; $e++) {
                            for ($f = $e + 1; $f < 49; $f++) {
                                
                            }
                        }
                    }
                }
            }
            echo "$a $b $c $d $e $f<br>";
        }
        ?>
 
Ето така трябва да е:

PHP:
<?php
for ($a = 1; $a <= 44; $a++) {
    for ($b = $a + 1; $b <[b]=[/b] 45; $b++) {
        for ($c = $b + 1; $c <[b]=[/b] 46; $c++) {
            for ($d = $c + 1; $d <[b]=[/b] 47; $d++) {
                for ($e = $d + 1; $e <[b]=[/b] 48; $e++) {
                    for ($f = $e + 1; $f <[b]=[/b] 49; $f++) {
                        echo "$a $b $c $d $e $f<br>";
                    }
                }
            }
        }
    }
}
?>
 
Ако искаш да избереш 30 числа, 30 цикъла ли ще напишеш?
Може да използваш рекурсия по следния начин:
PHP:
<?php
$currentCombination = array();
function print_comb($to, &$values)
{
	for($i = 0; $i < $to; ++$i)
	{
		echo $values[$i] . ' ';
	}
	echo "<br>";
}
function comb($N, $K, $pos, $previous, &$currentCombination)
{
	if($pos == $K)
	{
		print_comb($pos, $currentCombination);
		return;
	}
	for($i = $previous + 1; $i <= $N; ++$i)
	{
		$currentCombination[$pos] = $i;
		comb($N, $K, $pos+1, $i, $currentCombination);
	}
}
$N = 49;
$K = 6;
comb($N, $K, 0, 0, $currentCombination);
 

Back
Горе