顺时针打印矩阵

来源:互联网 发布:js 时间间隔秒 编辑:程序博客网 时间:2024/06/17 06:02

题目描述

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

#include <iostream>using namespace std;void PrintNumber(int num){printf("%d\t", num);}void PrintMatrix(int** number,int colums, int rows, int start){int endX = colums -1 -start;int endY = rows -1 - start;for(int i = start ; i <= endX; i++){int num = number[start][i];PrintNumber(num);}if(start < endX){for(int i = start+1; i <= endY; i++){int num = number[i][endX];PrintNumber(num);}}if(start < endX && start < endY){for(int i = endX -1;i >= start; i--){int num = number[endY][i];PrintNumber(num);}}if(start < endY && endX -1 > start){for(int i = endY-1 ; i >= start + 1;i--){int num = number[i][start];PrintNumber(num);}}}void PrintMatrixClockWisely(int** number, int colums, int rows){if(number == NULL || colums <= 0 || rows <= 0)return;int start = 0;while(colums > 2*start && rows > 2*start){PrintMatrix(number, colums, rows, start);start++;}}

// ====================测试代码====================void Test(int columns, int rows){    printf("Test Begin: %d columns, %d rows.\n", columns, rows);    if(columns < 1 || rows < 1)        return;    int** numbers = new int*[rows];    for(int i = 0; i < rows; ++i)    {        numbers[i] = new int[columns];        for(int j = 0; j < columns; ++j)        {            numbers[i][j] = i * columns + j + 1;        }    }    PrintMatrixClockWisely(numbers, columns, rows);    printf("\n");    for(int i = 0; i < rows; ++i)        delete[] (int*)numbers[i];    delete[] numbers;}int main(int argc, char* argv[]){    /*    1        */    Test(1, 1);    /*    1    2    3    4    */    Test(2, 2);    /*    1    2    3    4    5    6    7    8    9    10   11   12    13   14   15   16    */    Test(4, 4);    /*    1    2    3    4    5    6    7    8    9    10    11   12   13   14   15    16   17   18   19   20    21   22   23   24   25    */    Test(5, 5);    /*    1    2    3    4    5    */    Test(1, 5);    /*    1    2    3    4    5    6    7    8    9    10    */    Test(2, 5);    /*    1    2    3    4    5    6    7    8    9    10   11   12    13   14   15    */    Test(3, 5);    /*    1    2    3    4    5    6    7    8    9    10   11   12    13   14   15   16    17   18   19   20    */    Test(4, 5);    /*    1    2    3    4    5    */    Test(5, 1);    /*    1    2    3    4    5    6    7    8    9    10    */    Test(5, 2);    /*    1    2    3    4    5    6    7    8    9    10    11   12   13   14    15    */    Test(5, 3);    /*    1    2    3    4    5    6    7    8    9    10    11   12   13   14   15    16   17   18   19   20    */    Test(5, 4);    return 0;}

0 0
原创粉丝点击