题目描述
给定一个正整数n(1<=n<=20),画出螺旋矩阵。
输入
输入: 一个正整数n
输出
输出:
对应画出螺旋矩阵
样例输入
5
样例输出
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
提示
每一个数后输出空格
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); int n=cin.nextInt(); int [][]a=new int[n][n]; int count=0; int i=0,j=0; final int up = 1; final int down = -1; final int left = 2; final int right = -2; int dir = right; int cir = 1;// 第几圈赋值 while(true){ count++; a[i][j]=count; switch(dir){ case right: if(j<n-cir){//当前行右方还有没赋值的 j++; }else{ dir = down; i++; } break; case down: if(i<n-cir){//当前列下方还有没赋值的 i++; }else{ dir = left; j--; } break; case left: if(j>cir-1){//当前行左边还有没赋值的 j--; }else{ dir = up; i--; } break; case up: if(i>cir){//当前列上边边还有没赋值的 i--; }else{ cir++;//赋值了一圈 dir = right; j++; } break; } if(count>=n*n){ break; } } for(i = 0; i<n; i++){ for(j = 0; j<n; j++){ System.out.print(a[i][j]+" "); } System.out.println(); } cin.close(); } }