zoukankan      html  css  js  c++  java
  • 蓝桥杯 回形取数

    题目描述

      回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。

    输入格式

      输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。

    输出

      输出只有一行,共m*n个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。

    样例输入

    3 3
    1 2 3
    4 5 6
    7 8 9
    3 2
    1 2
    3 4
    5 6

    样例输出

    1 4 7 8 9 6 3 2 5
    1 3 5 6 4 2

    类似于蛇形填数

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cstring>
     4 using namespace std;
     5 int main()
     6 {
     7     int m,n,i,j;
     8     int a[205][205],vis[205][205];
     9     memset(vis,0,sizeof(vis));
    10      cin>>m>>n;
    11     for(i=1;i<=m;i++)
    12         for(j=1;j<=n;j++)
    13         {
    14             cin>>a[i][j];
    15             vis[i][j]=1;//有数的标记为1
    16         }
    17      cout<<a[1][1];vis[1][1]=0;//控制空格先输出第一个数
    18      int tot=1;i=2;j=1;
    19       while(tot<n*m)
    20         {
    21         while(i<=m && vis[i][j]==1){cout<<" "<<a[i][j];vis[i][j]=0;i++;tot++;}    i--;j++;
    22         while(j<=n && vis[i][j]==1){cout<<" "<<a[i][j];vis[i][j]=0;j++;tot++;}    i--;j--;
    23         while(i>=1 && vis[i][j]==1){cout<<" "<<a[i][j];vis[i][j]=0;i--;tot++;}    i++;j--;
    24         while(j>=1 && vis[i][j]==1){cout<<" "<<a[i][j];vis[i][j]=0;j--;tot++;}    i++;j++;
    25         }
    26     return 0;
    27 }
  • 相关阅读:
    IPC机制key值的各位组成
    ctrl+c,ctrl+d,ctrl+z在linux中意义
    Linux x86_64与i386区别之 —— 内存寻址
    readdir_r()读取目录内容
    memmove和memcpy
    sscanf的应用
    获取CPU频率
    盘点十个超级实用的 JS 特性
    Java 类在 Tomcat 中是如何加载的?
    Java 类在 Tomcat 中是如何加载的?
  • 原文地址:https://www.cnblogs.com/lovychen/p/3603720.html
Copyright © 2011-2022 走看看