1 #include"iostream"
2 #include"stdio.h"
3 using namespace std;
4
5 void PrintMatrixInCircle(int** matrix,int rows,int columns,int start)
6 {
7 int endRow=rows-1-start;
8 int endCol=columns-1-start;
9
10 for(int i=start;i<=endCol;i++)
11 cout<<matrix[start][i]<<' ';
12 cout<<endl;
13 if(endRow>start)
14 {
15 for(int i=start+1;i<=endRow;i++)
16 cout<<matrix[i][endCol]<<' ';
17 cout<<endl;
18 }
19
20 if(endRow>start&&endCol>start)
21 {
22 for(int i=endCol-1;i>=start;i--)
23 cout<<matrix[endRow][i]<<' ';
24 cout<<endl;
25 }
26 if(endRow-1>start&&endCol>start)
27 {
28 for(int i=endRow-1;i>start;i--)
29 cout<<matrix[i][start]<<' ';
30 cout<<endl;
31 }
32 }
33
34 void PrintMatrixClockWisely(int** matrix,int rows,int columns)
35 {
36 if(matrix==nullptr || rows<=0 || columns<=0)
37 return;
38 int start=0;
39 while(rows>2*start&&columns>2*start)
40 {
41 PrintMatrixInCircle(matrix,rows,columns,start);
42 start++;
43 }
44 cout<<endl<<endl;
45 }
46
47 void Test(int rows,int cols)
48 {
49 int** matrix=new int*[rows];
50
51 for(int i=0;i<rows;i++)
52 {
53 matrix[i]=new int[cols];
54 for(int j=0;j<cols;j++)
55 {
56 matrix[i][j]=i*cols+j;
57 }
58 }
59 PrintMatrixClockWisely(matrix,rows,cols);
60 }
61
62 int main()
63 {
64 Test(1,1);
65 Test(1,2);
66 Test(2,1);
67 Test(5,5);
68
69 return 0;
70 }