题目:输入一个矩阵,按照从外向里以顺时针一次打印出每一个数字,例如矩阵{ {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
分析:考虑各个边界
/* 剑指offer面试题20 */ #include <iostream> using namespace std; void ClockwiseMatrix(int a[][4],int column,int row,int start){ int endx = column - 1 - start; int endy = row - 1 - start; for(int i=start;i<=endx;++i){ int number = a[start][i]; cout << number << " " << flush; } if(start < endy){ for(int i=start+1;i<=endy;i++){ int number = a[i][endy]; cout << number << " " << flush; } } if(start < endx && start < endy){ for(int i=endx-1;i>=start;i--){ int number = a[endy][i]; cout << number << " " << flush; } } if(start < endx && start < endy-1){ for(int i=endy-1;i>=start+1;i--){ int number = a[i][start]; cout << number << " " << flush; } } } void ClockwiseMatrix(int a[][4],int column,int row){ if(column <= 0 || row <=0){ return ; } int start = 0; while(column > start*2 && row > start * 2){ ClockwiseMatrix(a,column,row,start); ++start; } } int main() { int a[4][4] = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16} }; int row = 4; int column = 4; ClockwiseMatrix(a,column,row); return 0; }