Keresés

Új hozzászólás Aktív témák

  • Doink

    aktív tag

    válasz htc07 #19277 üzenetére

    Iteratív megoldás:

    <?php
    $diakokSzama = $ajtokSzama = 50;
    $ajtok = array_fill(1, $ajtokSzama, false); // false: zart, true: nyitott

    for($d=1; $d<=$diakokSzama; $d++) { // minden diák
    echo "<br>${d}. diák ezeket érintette: ";
    for($a=$d; $a<=$ajtokSzama; $a=$a+$d) { // diák ajtói
    echo $a . ",";
    $ajtok[$a] = !$ajtok[$a]; // kinyitja/becsukja az ajtót (negálás)
    }
    }
    echo "<br><br>";
    echo array_sum($ajtok) . " ajto marad nyitva"; // azért működik mert átkasztolja a true-t 1-re, false-t 0-ra

    Rekurzív megoldás:

    <?php
    $diakokSzama = $ajtokSzama = 50;
    $ajtok = array_fill(1, $diakokSzama, false); // false: zart, true: nyitott

    function diakLepes($d, $a){ // $d: diák, $a: ajtó
    global $ajtokSzama, $ajtok;

    if ($a <= $ajtokSzama) { // csak akkor ha a kapott ajtószám érvényes
    echo $a . ",";
    $ajtok[$a] = !$ajtok[$a]; // kinyitja/becsukja az ajtót (negálás)
    diakLepes($d, $d+$a); // rekurzívan meghívjuk ugyanezt a diák következő szekrényére
    }
    }

    for($d=1; $d<=$diakokSzama; $d++) { // minden diák
    echo "<br>${d}. diák ezeket érintette: ";
    diakLepes($d, $d);
    }
    echo "<br><br>";
    echo array_sum($ajtok) . " ajto marad nyitva"; // azért működik mert átkasztolja a true-t 1-re, false-t 0-ra

Új hozzászólás Aktív témák

Hirdetés