矩阵排列问题在php

我想知道一些解决这个问题的方法.

给出一个数字说16,你必须以这种方式安排一个矩阵

1  2  3  4
12 13 14 5
11 16 15 6
10 9  8  7

语言并不重要(最好是PHP);

最佳答案
[编辑:更新]如果语言无关紧要:

转到:http://rosettacode.org/wiki/Spiral_matrix

在PHP中:

干得好:

<?php
function getSpiralArray($n)
{
    $pos = 0;
    $count = $n;
    $value = -$n;
    $sum = -1;

    do
    {
        $value = -1 * $value / $n;
        for ($i = 0; $i < $count; $i++)
        {
            $sum += $value;
            $result[$sum / $n][$sum % $n] = $pos++;
        }
        $value *= $n;
        $count--;
        for ($i = 0; $i < $count; $i++)
        {
            $sum += $value;
            $result[$sum / $n][$sum % $n] = $pos++;
        }
    } while ($count > 0);

    return $result;
}

function PrintArray($array)
{
    for ($i = 0; $i < count($array); $i++) {
        for ($j = 0; $j < count($array); $j++) {
            echo str_pad($array[$i][$j],3,' ');
        }
        echo '<br/>';
    }
}

$arr = getSpiralArray(4);
echo '<pre>';
PrintArray($arr);
echo '</pre>';
?>

转载注明原文:矩阵排列问题在php - 代码日志