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 );
|