zoukankan      html  css  js  c++  java
  • 顺时针打印矩阵

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

    代码很难看,不知道为什么,希望高人指点一二。

  • 相关阅读:
    【每天一道PAT】1001 A+B Format
    C++ STL总结
    开篇
    happen-before原则
    java多线程的状态转换以及基本操作
    集合初始容量
    fail-fast机制
    Stack
    Iterator
    Vector
  • 原文地址:https://www.cnblogs.com/canbefree/p/3719181.html
Copyright © 2011-2022 走看看