zoukankan      html  css  js  c++  java
  • 十四:回形取数

    题目:回形取数

    回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。
    输入格式
      输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。
    输出格式
      输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。
    样例输入
    3 3
    1 2 3
    4 5 6
    7 8 9
    样例输出
    1 4 7 8 9 6 3 2 5
    样例输入
    3 2
    1 2
    3 4
    5 6
    样例输出
    1 3 5 6 4 2

     1 #include<stdio.h>
     2 int main(){
     3     int n,m,k=1;
     4     int i,j;
     5     int b[300][300];
     6     int c[500];
     7     scanf("%d%d",&n,&m);
     8 for(i=0;i<n;i++)
     9     for(j=0;j<m;j++){
    10         scanf("%d",&b[i][j]);
    11     }
    12     
    13     i=0,j=0;
    14     c[0]=b[0][0];
    15     b[0][0]=0;
    16     while(1){
    17         while(i+1<n&&b[i+1][j]){
    18             c[k++]=b[++i][j];
    19             b[i][j]=0;
    20         }
    21         if(k>=n*m) break;
    22         while(j+1<m&&b[i][j+1]){
    23             c[k++]=b[i][++j];
    24             b[i][j]=0;
    25         }
    26         if(k>=n*m) break;
    27             while(i-1>=0&&b[i-1][j]){
    28                 c[k++]=b[--i][j];
    29                 b[i][j]=0;
    30         }
    31         if(k>=n*m) break;
    32             while(j-1>=0&&b[i][j-1]){
    33                 c[k++]=b[i][--j] ;
    34                 b[i][j]=0;
    35         }
    36         if(k>=n*m) break;
    37     }
    38     for(i=0;i<k;i++){
    39             printf("%d ",c[i]);
    40         }
    41     return 0;
    42 }
  • 相关阅读:
    MySQL 查询各科前三的数据
    MySQL 分时间段查询
    MySQL 查询同一字段中同时满足多个条件
    MySQL 分组累加
    快速搭建LNMP
    打开页面默认弹出软键盘,同时兼容iOS和Android
    linux 系统的ssh服务
    linux 磁盘
    linux系统基础网络配置
    discuz中方法
  • 原文地址:https://www.cnblogs.com/yuming226/p/8146429.html
Copyright © 2011-2022 走看看