思路:一圈一圈打印。打印继续的条件,每圈的最左上角的点(StartX,StartY)满足*StartX x 2<rows, StartY x 2<cols *。
只打印一步:只有一行
只打印二步:至少两行,一列
只打印三步:两行,至少两列
打印三步:三行,至少两列
printMatrix void (int rows,int cols,int [] number){
if(number==null|| rows==0||cols)
return;
for(int start=0;start*2<cols&&start*2<rows;start++){
printMatrixInCircle(start,rows, cols,number)
start++;
}
}
printMatrixInCircle(int start,int rows,int cols,int [] number){
endX=cols-start-1;
endY=rows-start-1;
//从左到右打印一行
for(int i=start;i<=endY;i++)
print(numbers[start][i]);
//从上到下打印一列
if(start<endX){
for(int i=start+1;i<=endX;i++)
print(numbers[i][endX]);
}
//从右到左打印一行
if(start<endX&&start<endY){
for(int i=endX-1;i>=start;i--)
print(numbers[endX][i]);
}
//从下到上打印一行
if(start<endX&&start<endY-1){
for(int i=endX-1;i>start;i--)
print(numbers[i][start]);
}
}