• 二维数组回形遍历(转)


    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 }
    复制代码
    http://www.cnblogs.com/huashanqingzhu/p/5666473.html
  • 相关阅读:
    Android与H5互调
    在本地(自己电脑上)部署了tomcat服务器,真机测试遇到的问题
    Android项目搭建最常用的架构解密
    Android Studio插件Gsonformat的安装和使用
    如何配置tomcat环境变量
    Cannot resolve symbol KeyEventCompat(android.support.v4.view.KeyEventCompat找不到)
    CG-CTF | 上传绕过
    Codeforce |Educational Codeforces Round 77 (Rated for Div. 2) B. Obtain Two Zeroes
    滑动窗口 | 求最长连续子数组
    第四周训练 | 并查集
  • 原文地址:https://www.cnblogs.com/wangbin/p/10277212.html
Copyright © 2020-2023  润新知