01 02 03 04
12 13 14 05
11 16 15 06
10 09 08 07
打印如上順序的矩陣代碼php
<?php
function sort_matrix($n){
$start_row = 0; $start_col = 0; $end_row = $n - 1; $end_col = $n - 1;
$row = 0; $col = 0; $type = 1;
$matrix_arr = [];ide
for($k = 1; $k <= $n * $n; ++$k){ $matrix_arr[$row][$col] = $k; if($type == 1){//第一行 ++$col; }elseif($type == 2){//最後一列 ++$row; }elseif($type == 3){//最後一行 --$col; }elseif($type == 4){//第一列 --$row; } if($type == 1 && $col > $end_col){//遍歷未賦值的首行後開始行變量+1 ++$start_row; $row = $start_row; $col = $end_col; $type = 2;//隨後處理最後一列 }elseif($type == 2 && $row > $end_row){//遍歷最後一列後 --$end_col; $row = $end_row; $col = $end_col; $type = 3;//隨後處理最後一行 }elseif($type == 3 && $col < $start_col){//遍歷最後一行後 --$end_row; $row = $end_row; $col = $start_col; $type = 4;//隨後處理第一列 }elseif($type == 4 && $row < $start_row){//遍歷第一列後 ++$start_col; $row = $start_row; $col = $start_col; $type = 1;//隨後處理第一行 } } return $matrix_arr; } //打印row行,col列矩陣 function print_matrix($matrix_arr, $row, $col){ for($i = 0; $i < $row; ++$i){ for($j = 0; $j < $col; ++$j){ echo sprintf("%02d", $matrix_arr[$i][$j]) . " "; } echo "<br />"; } } $n = 4; $matrix_arr = sort_matrix($n); print_matrix($matrix_arr, $n, $n);
?>code