• 输出螺旋矩阵


     1 //使用gcc完成一个matrix
     2 //要求输入两个整数m,n ,得到一个螺旋矩阵。
     3 //如输入3,4返回
     4 //A B C D
     5 //J K L E
     6 //I H G F
     7 
     8 #include <stdio.h>
     9 #include <string.h>
    10 const int ROW_SIZE = 10;
    11 const int COLUMN_SIZE =10;
    12 
    13 int main()
    14 {
    15     int array[ROW_SIZE][COLUMN_SIZE];
    16     memset(array, 0, sizeof(array));
    17     int i,j;
    18 
    19     int x = 0;
    20     int y = 0;
    21     int M,N;
    22     printf("请输入M,N
    ");
    23     scanf("%d%d",&M,&N);
    24     int totalStep = M*N;
    25     /*
    26      * 0 turn right
    27      * 1 turn down
    28      * 2 turn left
    29      * 3 turn up
    30      */
    31     int dir = 0;
    32     int count = 65;
    33     while(1){
    34         array[x][y] = count;
    35     
    36         if(0 == dir){
    37             if( ( (y+1) == N) || (array[x][y+1] != 0) ){
    38                 dir = (dir+1)%4;
    39                 x = x + 1;
    40             }
    41             else{
    42                 y = y + 1;
    43             }
    44         }
    45         else if(1 == dir){
    46             if( ( (x+1) == M) || (array[x+1][y] != 0) ){
    47                 dir = (dir + 1)%4;
    48                 y = y -1;
    49             }
    50             else{
    51                 x = x + 1;
    52             }
    53         }
    54         else if(2 == dir){
    55             if( ( (y-1) < 0) || (array[x][y-1] != 0) ){
    56                 dir = (dir + 1)%4;
    57                 x = x - 1;
    58             }
    59             else{
    60                 y = y - 1;
    61             }
    62         }
    63         else if(3 == dir){
    64             if( ( (x-1) < 0) || (array[x-1][y] != 0) ){
    65                 dir = (dir + 1)%4;
    66                 y = y + 1;
    67             }
    68             else{
    69                 x = x - 1;
    70             }
    71         }
    72 
    73         //break or add moveStep
    74         if(count == totalStep+64)
    75             break;
    76         else
    77             count++;
    78     }
    79 
    80     //print
    81     for( i = 0; i < M; i++){
    82         for( j= 0; j < N; j++)
    83             printf("%3c", array[i][j]);
    84         printf("
    ");
    85     }
    86     return 0;
    87 }

  • 相关阅读:
    Spark Streaming 调优指南
    Hive实战之Youtube数据集
    【源码解析】BlockManager详解
    Spark操作HBase问题:java.io.IOException: Non-increasing Bloom keys
    Spark实战之读写HBase
    ZooKeeper的简单理解
    Flume-ng源码解析之Source组件
    Flume-ng源码解析之Sink组件
    Flume-ng源码解析之Channel组件
    Flume-ng源码解析之启动流程
  • 原文地址:https://www.cnblogs.com/-rfq/p/6872252.html
Copyright © 2020-2023  润新知