zoukankan      html  css  js  c++  java
  • <转载>二维数组回形遍历

    C:二维数组回形遍历 
    总时间限制: 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 
    样例输出 









    10 
    11 
    12 
    13 
    14 
    15 
    16 
    来源 
    北京大学2009年医学部练习题

    代码:

    #include<iostream>
    using namespace std;
    int main(){
    int row,col;//行数和列数
    int n;//用于控制回形输出
    int times=0;//输出的次数
    while(scanf("%d%d", &row, &col)!=EOF){
    int **p=new int*[row];//动态二维数组
    int i,j;
    for(i=0; i<row; i++){
      p[i]=new int[col];
      for(j=0; j<col; j++){
        scanf("%d", &p[i][j]);//输入二维数组的所有元素
      }
    }
    int max=col*row;//输出结束则停止输出
    for(n=0; ; n++){
        for(j=n; j<col-n; j++){//输出回形的上面的行
          cout<<p[n][j]<<endl;
          times++;
        }
        if(max==times)break;
        for(i=n+1; i<row-n; i++){//输出回形的右边的列
          cout<<p[i][col-n-1]<<endl;
          times++;
        }
        for(j=col-n-2; j>=n; j--){
         cout<<p[row-n-1][j]<<endl;//输出回形的下面的行
         times++;
        }
        if(max==times)break;
        for(i=row-n-2; i>n; i--){//输出回形的左边的列
         cout<<p[i][n]<<endl;
         times++;
        }
        if(max==times)break;
    }
    for(i=0; i<row; i++){//主动释放动态二维数组的空间
        delete[] p[i];
        p[i]=NULL;
    }
        delete[] p;
        p=NULL;
    }
    return 0;
    }
  • 相关阅读:
    2020/8/8
    2020/8/7
    2020/8/6
    2020/8/5
    2020/8/4
    2020/8/3
    19,CSS 滤镜
    18 章 CSS 链接、光标、 DHTML 、缩放
    17 , CSS 区块、浮动、定位、溢出、滚动条
    16 , CSS 边框与边界
  • 原文地址:https://www.cnblogs.com/kxzh/p/8608374.html
Copyright © 2011-2022 走看看