• 二维数组回形遍历


    http://noi.openjudge.cn/ch0108/23/

    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述

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

    输入输入的第一行上有两个整数,依次为row和col。
    余下有row行,每行包含col个整数,构成一个二维整数数组。
    (注:输入的row和col保证0 < row < 100, 0 < col < 100)输出按遍历顺序输出每个整数。每个整数占一行。样例输入

    4 4
    1 2 3 4
    12 13 14 5
    11 16 15 6
    10 9 8 7

    样例输出

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    代码如下:
     1 #include <stdio.h>
     2 #define maxN 101
     3 int main(int argc, char *argv[])
     4 {
     5     int row,col,i,j,k;
     6     int a[maxN][maxN];
     7     int count;
     8     
     9     scanf("%d%d",&row,&col);
    10     for(i=0;i<row;i++)
    11     {
    12         for(j=0;j<col;j++)
    13         {
    14             scanf("%d",&a[i][j]);
    15         }
    16     }
    17     
    18     if(row==1)//只有一行
    19     {
    20         i=0;j=0; 
    21         for(k=1;k<=col;k++)
    22         { printf("%d
    ",a[i][j]);j++;}
    23     }
    24     else if(col==1)//只有一列
    25     {
    26         i=0;j=0;
    27         for(k=1;k<=row;k++)
    28         { printf("%d
    ",a[i][j]);i++;}
    29     }
    30     else
    31     {
    32         i=0;j=0;
    33         count=row*col;
    34         while(count>0)
    35         {
    36             for(k=1;k<col;k++)
    37             { count--; printf("%d
    ",a[i][j]);j++;}  //输出一个环的上面那一条边 
    38             
    39             for(k=1;k<row;k++)
    40             { count--; printf("%d
    ",a[i][j]);i++;}  //输出一个环的右侧那一条边
    41             
    42             for(k=1;k<col;k++)
    43             { count--; printf("%d
    ",a[i][j]);j--;}  //输出一个环的下面那一条边
    44             
    45             for(k=1;k<row;k++)
    46             { count--; printf("%d
    ",a[i][j]);i--;}  //输出一个环的左侧那一条边
    47             
    48             i++;
    49             j++;
    50             row-=2;
    51             col-=2;
    52             if(row==1)//只剩下一行
    53             {
    54                 for(k=1;k<=col;k++)
    55                 { count--; printf("%d
    ",a[i][j]);j++;}
    56             }
    57             else if(col==1)//只剩下一列
    58             {
    59                 for(k=1;k<=row;k++)
    60                 { count--; printf("%d
    ",a[i][j]);i++;}
    61             }
    62         }
    63     }
    64     return 0;
    65 }
  • 相关阅读:
    Java实现 LeetCode 69 x的平方根
    Java实现 LeetCode 68 文本左右对齐
    Java实现 LeetCode 68 文本左右对齐
    Java实现 LeetCode 68 文本左右对齐
    Java实现 LeetCode 67 二进制求和
    Java实现 LeetCode 67 二进制求和
    Java实现 LeetCode 67 二进制求和
    Java实现 LeetCode 66 加一
    Java实现 LeetCode 66 加一
    CxSkinButton按钮皮肤类
  • 原文地址:https://www.cnblogs.com/huashanqingzhu/p/5666473.html
Copyright © 2020-2023  润新知