21,890
社区成员
发帖
与我相关
我的任务
分享
if(++$i == $n-1) {
$i = $m;
array_unshift($d, array_pop($d));
$dx = $d[0] - $d[2];
$dy = $d[1] - $d[3];
if($d[0]) {
$m++;
$n--;
$i = $x = $y = $m;
}
}
function Circle($n) {
$k = $n % 2;
$ar = array();
for($i=0; $i<$n; $i++)
$ar[$i] = array_fill(0, $n, 0);
$p = $m = $i = 0;
$x = $y = 0;
$dx = 1;
$dy = 0;
$d = array(1, 0, 0, 0);
$len = $n * $n;
while($p < $len) {
$ar[$y][$x] = ++$p;
$x += $dx;
$y += $dy;
if(++$i == $n-1) {
$i = $m;
array_unshift($d, array_pop($d));
$dx = $d[0] - $d[2];
$dy = $d[1] - $d[3];
if($d[0]) {
$m++;
$n--;
$i = $x = $y = $m;
}
}
}
$r = '<table>';
foreach($ar as $v)
$r .= '<tr><td>' . join('</td><td>', $v) . '</td></tr>';
return $r.'</table>';
}
function Circle($n) {
$ar = array();
for($i=0; $i<$n; $i++)
$ar[$i] = array_fill(0, $n, 0);
$p = 1;
$x = 0;
$y = 0;
$dx = 1;
$dy = 0;
$len = $n * $n;
while($len--) {
$ar[$y][$x] = $p++;
while(1) {
if($dx && $ar[$y][$x + $dx] > 0) {$dy = $dx; $dx = 0; break; }
if($dy && $ar[$y+$dy][$x] > 0) { $dx = -$dy; $dy = 0; break; }
if($x + $dx == $n) { $dy = 1; $dx = 0; break; }
if($x + $dx < 0) { $dx = 0; $dy = -1; break; }
if($y + $dy == $n) { $dy = 0; $dx = -1; break; }
if($y + $dy < 0) { $dy = 0; $dx = 1; break; }
break;
}
$x += $dx;
$y += $dy;
}
$r = '<table>';
foreach($ar as $v)
$r .= '<tr><td>' . join('</td><td>', $v) . '</td></tr>';
return $r.'</table>';
}
for($i=1;$i<30;$i++){
$html .= Circle( $i );
$html .='<hr>';
}
?>
<html>
<head>
<style>
ul li {
float: left;
width: 40px;
height: 40px;
}
hr{clear:both;}
</style>
</head>
<body>
<?php
echo $html?>
</body>
</html>
if($x + $dx == $n) { $dy = 1; $dx = 0; break; }
if($x + $dx < 0) { $dx = 0; $dy = -1; break; }
if($y + $dy == $n) { $dy = 0; $dx = -1; break; }
if($y + $dy < 0) { $dy = 0; $dx = 1; break; }
if($dx && $ar[$y][$x + $dx] > 0) {$dy = $dx; $dx = 0; break; }
if($dy && $ar[$y+$dy][$x] > 0) { $dx = -$dy; $dy = 0; break; }