昨天面试给出了个矩阵的题,当时有思路,但基于时间,而且是在纸上,也没写清楚,回来想想真是简单,代码写完了,还是记录下来吧
package com.test;
/**
* 打印如下矩阵
* 1 2 3 4 5
* 16 17 18 19 6
* 15 24 25 20 7
* 14 23 22 21 8
* 13 12 11 10 9
*
* @author fengxian.liu
*
*/
public class TestArray {
public static void main(String[] args){
int n=7;
int q=n/2+n%2;
int count=1;
int a[][]=new int[n][n];
for(int i=0;i<q;i++){//组装第i+1圈数据
//组装第n行
for(int j=i;j<n-i;j++){
a[i][j]=count;
//System.out.print("a["+i+"]["+j+"]="+count);
count++;
}
//System.out.println();
//组装最后第n列
for(int k=i+1;k<n-i;k++){
a[k][n-i-1]=count;
// System.out.print("a["+k+"]["+(n-i-1)+"]="+count);
count++;
}
//System.out.println();
// 组装最后第n行
for(int l=n-i-2;l>=i;l--){
a[n-i-1][l]=count;
//System.out.print("a["+(n-i-1)+"]["+l+"]="+count);
count++;
}
//System.out.println();
//组装左边的第n列
for(int k=n-i-2;k>i;k--){
//定值列的坐标
a[k][i]=count;
// System.out.print("a["+k+"]["+i+"]="+count);
count++;
}
//System.out.println();
}
//循环遍历打印出来
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
System.out.print(" "+a[i][j]);
}
System.out.println();
}
}
}