昨天面试给出了个矩阵的题,当时有思路,但基于时间,而且是在纸上,也没写清楚,回来想想真是简单,代码写完了,还是记录下来吧
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(); } } }