欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP实现顺时针打印矩阵及螺旋矩阵的方法

程序员文章站 2023-02-18 22:48:47
本文实例讲述了PHP实现顺时针打印矩阵的方法。分享给大家供大家参考,具体如下: 问题 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:...
本文实例讲述了PHP实现顺时针打印矩阵的方法。分享给大家供大家参考,具体如下:

问题

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:

1234

5678

9101112

13141516

则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

解决方法

就是一圈一圈地打印,只要控制好循环就可以。

注意单行单列的情况。

实现代码

function printMatrix($matrix)

{

$row = count($matrix);

$col = count($matrix[0]);

if($row == 0 || $col == 0)

return $matrix;

$result = array();

$left = 0;$right = $col-1; $top = 0;$bottom = $row-1;

while($left<=$right && $top<= $bottom){

for($i =$left;$i<=$right;++$i){

array_push($result, $matrix[$top][$i]);

}

for($i =$top+1;$i<=$bottom;++$i)

array_push($result, $matrix[$i][$right]);

if($top!=$bottom){

for($i = $right-1;$i>=$left;--$i)

array_push($result, $matrix[$bottom][$i]);

}

if($left!=$right){

for($i = $bottom-1;$i>$top;--$i)

array_push($result, $matrix[$i][$left]);

}

$left++;$right--;$top++;$bottom--;

}

return $result;

}