User:Gzjhones
<html> <body>
<?php /************************************************************************* * * This algorithm solves the 8 queens problem using backtracking. * Please try with N<=25 * * * *************************************************************************/ class Queens { var $size; var $arr; var $sol; function Queens($n = 8) { $this->size = $n; $this->arr = array(); $this->sol = 0; // Inicialiate array; for($i=0; $i<$n; $i++) { $this->arr[$i] = 0; } } function isSolution($n) { for ($i = 0; $i < $n; $i++) { if ($this->arr[$i] == $this->arr[$n] || ($this->arr[$i] - $this->arr[$n]) == ($n - $i) || ($this->arr[$n] - $this->arr[$i]) == ($n - $i)) { return false; } } return true; } function PrintQueens() { echo("solution #".(++$this->sol)."\n"); // echo("solution #".($this->size)."\n"); for ($i = 0; $i < $this->size; $i++) { for ($j = 0; $j < $this->size; $j++) { if ($this->arr[$i] == $j) echo("& "); else echo(". "); } echo("\n"); } echo("\n"); } // backtracking Algorithm function run($n = 0) { if ($n == $this->size){ $this->PrintQueens(); } else { for ($i = 0; $i < $this->size; $i++) { $this->arr[$n] = $i; if($this->isSolution($n)){ $this->run($n+1); } } } } } $myprogram = new Queens(9); $myprogram->run(); ?>
</body> </html>