zoukankan      html  css  js  c++  java
  • 逆向输出回环数组

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

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

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

    样例输入

    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 <stdio.h>
    #define maxN 101
    int main(int argc, char *argv[])
    {
        int row,col,i,j,k;
        int a[maxN][maxN];
        int count;
        
        printf("请输入行数 列数:
    "); 
        scanf("%d%d",&row,&col);
        printf("请输入%d*%d矩阵:
    ", row, col);
    	 
        for(i=0;i<row;i++)
        {
            for(j=0;j<col;j++)
            {
                scanf("%d",&a[i][j]);
            }
        }
        
        if(row==1)//只有一行
        {
            i=0;j=0; 
            for(k=1;k<=col;k++)
            { printf("%d
    ",a[i][j]);j++;}
        }
        else if(col==1)//只有一列
        {
            i=0;j=0;
            for(k=1;k<=row;k++)
            { printf("%d
    ",a[i][j]);i++;}
        }
        else
        {
            i=0;j=0;
            count=row*col;
            while(count>0)
            {   
                for(k=1;k<row;k++)
                { count--; printf("%d
    ",a[i][j]);i++;}  //输出一个环的左侧那一条边
                
                for(k=1;k<col;k++)
                { count--; printf("%d
    ",a[i][j]);j++;}  //输出一个环的下面那一条边
                
                for(k=1;k<row;k++)
                { count--; printf("%d
    ",a[i][j]);i--;}  //输出一个环的右侧那一条边
                
                for(k=1;k<col;k++)
                { count--; printf("%d
    ",a[i][j]);j--;}  //输出一个环的上面那一条边 
                
                i++;
                j++;
                row-=2;
                col-=2;
                if(row==1)//只剩下一行
                {
                    for(k=1;k<=col;k++)
                    { count--; printf("%d
    ",a[i][j]);j++;}
                }
                else if(col==1)//只剩下一列
                {
                    for(k=1;k<=row;k++)
                    { count--; printf("%d
    ",a[i][j]);i++;}
                }
            }
        }
        return 0;
    }
    

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

  • 相关阅读:
    instanceof操作符判断对象类型
    继承
    题解 P3943 星空
    NOIP 模拟 10 考试总结
    题解 P3942 将军令
    题解 P3941 入阵曲
    题解 P3191 [HNOI2007]紧急疏散EVACUATE
    NOIP 模拟 9 考试总结
    NOIP 模拟 9 分组
    NOIP 模拟 9 数颜色
  • 原文地址:https://www.cnblogs.com/52fhy/p/7208563.html
Copyright © 2011-2022 走看看