剑指offer——面试题29:顺时针打印矩阵
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 }