思路:一圈一圈打印。打印繼續的條件,每圈的最左上角的點(StartX,StartY)滿足*StartX x 2<rows, StartY x 2<cols *。
Paste_Image.png
只打印一步:只有一行
Paste_Image.png
只打印二步:至少兩行,一列
Paste_Image.png
只打印三步:兩行,至少兩列
Paste_Image.png
打印三步:三行,至少兩列
Paste_Image.png
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]);
}
}