输入:N的值为:4
输入:
1 12 11 10
2 13 16 9
3 14 15 8
4 5 6 7
分析:找出每一圈的规律,假设每一条边有k个元素,则第i圈的边上的元素为,将矩阵的每一圈分成两个半圈,则每一个半圈的元素为2k-1,前一个半圈的角标依次递加,后一个半圈的角标依次递减。
1 package pack; 2 import java.util.*; 3 4 public class demo_1 { 5 public static void main(String[] args) { 6 Scanner in=new Scanner(System.in);//创建一个可以从键盘输入的类 in; 7 int a[][] = new int [100][100]; 8 int n,k,x,t=1;//n代表矩阵的规模,x代表填入数据 9 System.out.print("请输入N的值:"); 10 n=in.nextInt();//n从键盘输入 11 k=n; 12 t=1; 13 x=1; 14 int i=0,j=0; 15 while(x<=n*n) { 16 for(int y=0;y<2*k-1;y++) {//由于矩阵的规模是n*n,并且k=n,为一条边上元素的个数,半圈为2k-1个元素 17 if(y<k) i+=t; 18 else j+=t; 19 a[i][j]=x; 20 x++; 21 } 22 t=-t; 23 k--; 24 } 25 for(int r=1;r<=n;r++) { 26 for(int s=0;s<n;s++) 27 System.out.print(a[r][s]+" "); 28 System.out.println(); 29 } 30 31 } 32 }