螺旋矩阵算法
$x = $y = 0;
$start = 1;
$n = 5;
SetMatrix($matrix, $x, $y, $start, $n);
for ($i = 0; $i < $n; $i++) {
for ($j = 0; $j < $n; $j++) {
printf("%4d", $matrix[$i][$j]);
}
echo "\n";
}
exit;
/**
* @param $matrix 矩阵
* @param $x 第一个元素的坐标x
* @param $y 第一个元素的坐标y
* @param $start 第一个元素的值
* @param $n 矩阵的大小
*/
function SetMatrix(&$matrix, $x, $y, $start, $n) {
$i = $j = 0;
if ($n <= 0) {
return;
}
if ($n == 1) {
$matrix[$x][$y] = $start;
return;
}
//up
for ($i = $x; $i < $x + $n - 1; $i++) {
$matrix[$y][$i] = $start++;
}
//right
for ($j = $y; $j < $y + $n - 1; $j++) {
$matrix[$j][$x + $n - 1] = $start++;
}
//bottom
for ($i = $x + $n - 1; $i > $x; $i--) {
$matrix[$y + $n - 1][$i] = $start++;
}
//left
for ($j = $y + $n - 1; $j > $y; $j--) {
$matrix[$j][$x] = $start++;
}
SetMatrix($matrix, $x + 1, $y + 1, $start, $n - 2);
}
* 文章为作者独立观点,不代表爱提网立场
* 本文不构成投资建议
转载此文请于文首标明作者姓名,保持文章完整性,并请附上出处(爱提网)及本页链接。原文链接:
https://www.itgoodboy.com/p/f48aec497691
产品建议及投诉请联系:service@itgoodboy.com