PHP 实现的字典序排列算法
感谢 bird 告诉我 $_POST[] 的用法。代码如下:
<?php if ($_POST["perdata"] == "") { $_POST["perdata"] = "1 2 3 4"; } $data = chop (trim ($_POST["perdata"])); $a = explode (" ", $data); sort ($a); $data = implode (" ", $a); ?> <?php function nextpermu (&$c) { $s = sizeof ($c); $i = $s - 1; while ($i > 0) { if ($c[$i] > $c[$i-1]) { $j = $s-1; while ($c[$j] <= $c[$i-1]) $j--; $t = $c[$i-1]; $c[$i-1] = $c[$j]; $c[$j] = $t; //echo $i."-".$j."<br>"; for ($j=$s-1; $i < $j; $i , $j--) { $t = $c[$i]; $c[$i] = $c[$j]; $c[$j] = $t; } return true; } $i--; } for ($i = 0, $j=$s-1; $i < $j; $i , $j--) { $t = $c[$i]; $c[$i] = $c[$j]; $c[$j] = $t; } return false; } ?> <html> <head> <title>排列-字典法</title> </head> <body> <form action="permutation.php" method="post"> <table> <tr> <td><input type="text" name="perdata"></td> <td><input type="submit" value="排列"></td> </tr> </table> </form> <p>当前元素:<? echo $data; ?></p> <table width="60%"> <tr> <th width="50" bgcolor="yellow">序号</th> <th bgcolor="EEEEFF">排列</th> </tr> <?php $num = 1; do { ?> <tr> <td align="center"><? echo $num; ?> </td> <td><? echo implode (" ", $a); ?></td> </tr> <?php $num ; } while (nextpermu ($a)); ?> </table> </body> </html>
本文地址:http://www.phprm.com/code/5881d9076cbabcd2de989a6457a9cd16.html
转载随意,但请附上文章地址:-)