逆向输出回环数组

题目来源:http://noi.openjudge.cn/ch0108/23/

给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按回形从外向内逆时针顺序遍历整个数组。如图所示:
逆向输出回环数组_第1张图片

输出
按遍历顺序输出每个整数。每个整数占一行。

样例输入

1	2	3	4
5	6	7	8
9	10	11	12

样例输出

1
5
9
10
11
12
8
4
3
2
6
7

PHP实现

$a = [
    [1,2,3,4],
    [5,6,7,8],
    [9,10,11,12]
];

$row = count($a);
$col = count($a[0]);

$i=0;$j=0;
$count = $row * $col;
while ($count > 0){

    //打印最左边一列
    for($k=1;$k<$row; $k++){
        $count--;echo $a[$i][$j] .PHP_EOL;$i++;
    }

    //打印最下边一行
    for($k=1;$k<$col; $k++){
        $count--;echo $a[$i][$j].PHP_EOL;$j++;
    }

    //打印最右边一列
    for($k=1;$k<$row; $k++){
        $count--;echo $a[$i][$j].PHP_EOL;$i--;
    }

    //打印最上边一行
    for($k=1;$k<$col; $k++){
        $count--;echo $a[$i][$j].PHP_EOL;$j--;
    }

    $row-=2;//走完一圈,行数减2
    $col-=2;//走完一圈,列数减2
    $i++;//最外一圈不用再次输出
    $j++;//最外一圈不用再次输出

    if($row == 1){
        for($k=0;$k<$col; $k++){
            $count--;echo $a[$i][$j].PHP_EOL;$j++;
        }
    }elseif($col == 1){
        for($k=0;$k<$row; $k++){
            $count--;echo $a[$i][$j].PHP_EOL;$i++;
        }
    }
}

可以调整代码实现原题目里的示例顺序输出。

C语言实现


#include 
#define maxN 101
int main(int argc, char *argv[])
{
    int row,col,i,j,k;
    int a[maxN][maxN];
    int count;
    
    printf("请输入行数 列数:\n"); 
    scanf("%d%d",&row,&col);
    printf("请输入%d*%d矩阵:\n", row, col);
	 
    for(i=0;i0)
        {   
            for(k=1;k

逆向输出回环数组_第2张图片

参考:
http://www.cnblogs.com/huashanqingzhu/p/5666473.html

你可能感兴趣的:(逆向输出回环数组)