介绍
小编给大家分享一下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");//翻转复原输出 } 系统.出.打印(): } } }
<>强输出测试强>
以上是Java如何实现顺时针输出螺旋二维数组的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!