php实现顺时针打印矩阵的代码实例

来源:转载 发布时间:2018-11-21 11:46:51 阅读量:704

本篇文章给大家带来的内容是关于php实现顺时针打印矩阵的代码实例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

1、行数和列数取出来row,col,圈数就是 (较小值-1)/2+1

2、外层循环控制圈数,内层四个for循环,i

3、第一个for循环,从左到右,j=i;j<col-i;j++;j<; arr[i][j]

4、第二个for循环,从上到下,k=i+1;k<row-i;k++; arr[k][col-1-i]

5、第三个循环,从右到左,m=col-2-i;m>=i&&row-1-i!=i;m-- arr[row-1-i][m]//row-1-i!=i单行的时候只打印一次

6、第四个循环,从下到上,n=row-2-i;n>=i&&col-1-i!=i;n-- arr[n][i]

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

<?php

$arr=array();

$flag=0;

for($i=0;$i<2;$i++){

        $flag=$i*2;

        for($j=0;$j<2;$j++){

                $flag++;

                $arr[$i][]=$flag;

        }  

}

var_dump($arr);

//顺时针打印矩阵

function printMatrix($arr){

        $res=array();

        $row=count($arr);

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

        $circle=intval((($row>$col ? $col : $row)-1)/2+1);

        for($i=0;$i<$circle;$i++){

                //转圈开始

                //从左到右

                for($j=$i;$j<=$col-1;$j++){

                        $t=$arr[$i][$j];

                        if(in_array($t,$res)) continue;

                        $res[]=$t;

                }  

                //从上到下

                for($k=$i+1;$k<$row-$i;$k++){

                        $t=$arr[$k][$col-$i-1];

     

                        if(in_array($t,$res)) continue;

                        $res[]=$t;

                }  

                //从右到左

                for($m=$col-$i-2;$m>=$i;$m--){

                        $t=$arr[$row-$i-1][$m];

                        if(in_array($t,$res)) continue;

                        $res[]=$t;

                }  

                //从下到上

                for($n=$row-$i-2;$n>$i;$n--){

                        $t=$arr[$n][$i];

                        if(in_array($t,$res)) continue;

                        $res[]=$t;

                }  

        }  

        return $res;

}

$res=printMatrix($arr);


标签: PHP
分享:
评论:
你还没有登录,请先