您的位置:首页 > 其它

顺时针打印矩阵

2014-05-09 16:32 211 查看
<?php
header("Content-Type:text/html;charset=utf-8");
// 顺时针打印矩阵

// 随机生成数组,a[i,j];
$col = rand ( 0, 10 );
$row = rand ( 0, 10 );

$arr = array ();
for($i = 0; $i < $col; $i ++)
for($j = 0; $j < $row; $j ++)
$arr [$i] [] = rand ( 0, 100 );

//输出矩形数组
function getEE($arr) {
$col = count ( $arr );
$row = count ( $arr [0] );
$i=0;
$j=0;
for($j=0;$j<$col;$j++){
for($i=0;$i<$row;$i++){
echo $arr[$j][$i]."  ";
}
echo "<br/>";
}
}

/*
* 分析: 由一周为一个轮回。 如果刚好有偶数个周,数组高大于宽,则有$col/2次轮回,若宽大于高则 有$row/2个轮回。 如果未奇数个周,则有$len/2+1个周。
*/
function Printarrayincircle($arr) {
$col = count ( $arr );
$row = count ( $arr [0] );
$len = $col < $row ? $col : $row;
for($i =0; $i < $len / 2; $i ++) {
$x=$i+1;
echo '第'.$x."圈:</br>";
Printnumberincircle ( $arr, $i );

}
}

/*
* 一周共有四次判断 Printnumberincircle($start,$end,$direction); 第一次: 第二次: 第三次: 第四次:
*/
function Printnumberincircle($arr, $p) {
$col = count ( $arr );
$row = count ( $arr [0] );
$len = $col < $row ? $col : $row;
// 第一次:start:$row-$i+1;end:$col-1;
for($i = 0; $i < $row - 2 * $p; $i ++)
echo $arr [ $p ] [$p + $i] . " -";
echo "<br/>";

for($i = 0; $i < $col - 2 * $p - 1; $i ++)
echo $arr [$p + $i + 1] [$row - $p - 1]. " -";
echo "<br/>";

if($p==floor($len/2)  )
break;
for($i = 0; $i < $row - 2 * $p - 1; $i ++)
echo $arr [$col - $p - 1] [$row - $i - $p -2]. " -";
echo "<br/>";
for($i = 0; $i < $col - 2 * $p - 2; $i ++)
echo $arr [$col - $i - $p-2] [$p]. " -";
echo "<br/>";
}

getEE($arr);
echo "<br/>";

Printarrayincircle ( $arr );
?>


代码很难看,不知道为什么,希望高人指点一二。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: