问题
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵:
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.
解决方案
代码
public static void solution(int[][] a){
int r1=1;
int r2=a.length-1;
int c1=0;
int c2=a[0].length-1;
int i=0,j=0,k=a.length*a[0].length;
while(k>1){
//1
for(;j<c2;j++){
System.out.print(""+a[i][j]+',');
k--;
}
c2--;
//2
for(;i<r2;i++){
System.out.print(""+a[i][j]+',');
k--;
}
r2--;
//3
for(;j>c1;j--){
System.out.print(""+a[i][j]+',');
k--;
}
c1++;
//4
for(;i>r1;i--){
System.out.print(""+a[i][j]+',');
k--;
}
r1++;
}
//解决出口问题
System.out.print(""+a[i][j]+',');
}