zoukankan      html  css  js  c++  java
  • JZ-C-20

    剑指offer第二十题:顺时针打印矩形

      1 //============================================================================
      2 // Name        : JZ-C-20.cpp
      3 // Author      : Laughing_Lz
      4 // Version     :
      5 // Copyright   : All Right Reserved
      6 // Description : 顺时针打印矩形
      7 //============================================================================
      8 
      9 #include <iostream>
     10 #include <stdio.h>
     11 using namespace std;
     12 
     13 void PrintMatrixInCircle(int** numbers, int columns, int rows, int start);
     14 void printNumber(int number);
     15 void PrintMatrixClockwisely(int ** numbers, int columns, int rows) {
     16     if (numbers == NULL || columns <= 0 || rows <= 0) {
     17         return;
     18     }
     19     int start = 0;
     20     //每次循环打印一个圆
     21     while (start * 2 < columns && start * 2 < rows) { //可循环打印的条件
     22         PrintMatrixInCircle(numbers, columns, rows, start);
     23         start++;
     24     }
     25 }
     26 void PrintMatrixInCircle(int** numbers, int columns, int rows, int start) {
     27     int endX = columns - 1 - start;
     28     int endY = rows - 1 - start;
     29     //从左到右打印
     30     for (int i = start; i <= endX; i++) {
     31         printNumber(numbers[start][i]);
     32     }
     33     //从上到下打印
     34     if (start < endY) {
     35         for (int i = start + 1; i <= endY; i++) {
     36             printNumber(numbers[i][endX]);
     37         }
     38     }
     39     //从右到左打印
     40     if (start < endX && start < endY) {
     41         for (int i = endX - 1; i >= start; i--) {
     42             printNumber(numbers[endY][i]);
     43         }
     44     }
     45     //从下到上打印
     46     if (start < endY - 1 && start < endX) {
     47         for (int i = endY - 1; i >= start + 1; i--) {
     48             printNumber(numbers[i][start]);
     49         }
     50     }
     51 }
     52 void printNumber(int number) {
     53     printf("%d	", number);
     54 }
     55 // ====================测试代码====================
     56 void Test(int columns, int rows)
     57 {
     58     printf("Test Begin: %d columns, %d rows.
    ", columns, rows);
     59 
     60     if(columns < 1 || rows < 1)
     61         return;
     62 
     63     int** numbers = new int*[rows];
     64     for(int i = 0; i < rows; ++i)
     65     {
     66         numbers[i] = new int[columns];
     67         for(int j = 0; j < columns; ++j)
     68         {
     69             numbers[i][j] = i * columns + j + 1;
     70         }
     71     }
     72 
     73     PrintMatrixClockwisely(numbers, columns, rows);
     74     printf("
    ");
     75 
     76     for(int i = 0; i < rows; ++i)
     77         delete[] (int*)numbers[i];
     78 
     79     delete[] numbers;
     80 }
     81 
     82 int main(int argc, char** argv)
     83 {
     84     /*
     85     1
     86     */
     87     Test(1, 1);
     88 
     89     /*
     90     1    2
     91     3    4
     92     */
     93     Test(2, 2);
     94 
     95     /*
     96     1    2    3    4
     97     5    6    7    8
     98     9    10   11   12
     99     13   14   15   16
    100     */
    101     Test(4, 4);
    102 
    103     /*
    104     1    2    3    4    5
    105     6    7    8    9    10
    106     11   12   13   14   15
    107     16   17   18   19   20
    108     21   22   23   24   25
    109     */
    110     Test(5, 5);
    111 
    112     /*
    113     1
    114     2
    115     3
    116     4
    117     5
    118     */
    119     Test(1, 5);
    120 
    121     /*
    122     1    2
    123     3    4
    124     5    6
    125     7    8
    126     9    10
    127     */
    128     Test(2, 5);
    129 
    130     /*
    131     1    2    3
    132     4    5    6
    133     7    8    9
    134     10   11   12
    135     13   14   15
    136     */
    137     Test(3, 5);
    138 
    139     /*
    140     1    2    3    4
    141     5    6    7    8
    142     9    10   11   12
    143     13   14   15   16
    144     17   18   19   20
    145     */
    146     Test(4, 5);
    147 
    148     /*
    149     1    2    3    4    5
    150     */
    151     Test(5, 1);
    152 
    153     /*
    154     1    2    3    4    5
    155     6    7    8    9    10
    156     */
    157     Test(5, 2);
    158 
    159     /*
    160     1    2    3    4    5
    161     6    7    8    9    10
    162     11   12   13   14    15
    163     */
    164     Test(5, 3);
    165 
    166     /*
    167     1    2    3    4    5
    168     6    7    8    9    10
    169     11   12   13   14   15
    170     16   17   18   19   20
    171     */
    172     Test(5, 4);
    173 
    174     return 0;
    175 }
  • 相关阅读:
    修改spring boot 的banner
    创建oracle 数据库的时候 提示 “使用database control配置数据库时,要求在当前oracle主目录中配置监听程序”
    Spring Boot 中文乱码解决
    SharePoint 2013 安装图解
    Hadoop 数据安全方案 Apache Eagle
    通用财经数据传输与监控平台1.0(泛型,接口与基类,Sql,Ibatis,Awt,Swing)
    应用Druid监控SQL语句的执行情况
    监控和剖析数据库操作 -- P6Spy、SQL Profiler、IronTrack SQL 使用简介
    Jboss7集群配置说明
    JavaMelody监控SQL
  • 原文地址:https://www.cnblogs.com/Laughing-Lz/p/5577602.html
Copyright © 2011-2022 走看看