Java如何实现顺时针输出螺旋二维数组

  介绍

小编给大家分享一下Java如何实现顺时针输出螺旋二维数组,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

最近看到一道有点意思的逻辑算法题,便着手实现一下。题目是要求打印出N * N顺时针螺旋数组,规律如下:

//1 2 3 4 5//16 17 18 19 6//15 24日25日20 7//14 22日23日21 8//13 12 11 10 9 

<强> Java实现示例代码如下:

进口java.util.Scanner;
  
  公开课主要{
  
  公共静态void main (String [] args) {
  
  扫描仪在=新扫描仪(系统);
  int n=in.nextInt ();
  
  int[][]矩形=new int (n + 1) (n + 1);
  
  int x=0, y=1;//当前遍历的位置
  int px=1, py=0;//x/y在当前循环方向的增量
  int pn=n;//该方向上还需要多少个数字(会递减,因为顺时针往里缩)
  int=n;//当前遍历方向的终点位置/* *目标输出顺时针*///1 2 3 4 5//16 17 18 19 6//15 24日25日20 7//14 22日23日21 8//13 12 11 10 9/* *翻转矩阵为逆时针(为了便于后面逻辑处理,输出的时候再翻转回去)*///1 16 15 14 13//2 17 24 23 12//3 18 25 22日11//4 19 20 21 10//5 6 7 8 9
  for (int i=1;我& lt;=n * n;我+ +){//翻转矩阵循环//移到下一个点(第一次方向1→5 x增量为1,y的增量为0,第二次方向为6→9 x增量为0,y增量为1,pn减少一个)
  x +=px;
  y +=py;
  矩形[x] [y]=我;
  如果(i==总和){//到达该方向的最后一个点
  如果(px==1 | | px==1) {//x的增量不为0,则为竖向→横向
  pn=pn - 1;//竖向变为横向的时候,该方向上数字的个数会减少一个=和+ pn总和;
  py=px;
  px=0;
  其他}{//x的增量为0,y的增量不为0,则为横向→竖向=和+ pn总和;
  px=py;
  py=0;
  }
  }
  }
  
  for (int i=1;我& lt;=n;我+ +){
  for (int j=1;j & lt;=n;j + +) {
  system . out。print(矩形[j][我]+“\ t");//翻转复原输出
  }
  系统.出.打印():
  }
  }
  
  }

<>强输出测试

癑ava如何实现顺时针输出螺旋二维数组"

以上是Java如何实现顺时针输出螺旋二维数组的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

Java如何实现顺时针输出螺旋二维数组