全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java实现顺时针输出螺旋二维数组的方法示例

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

//  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

Java 实现示例代码如下:

import java.util.Scanner;

public class Main {

 public static void main(String[] args) {

  Scanner in = new Scanner(System.in);
  int n = in.nextInt();

  int[][] rect = new int[n + 1][n + 1];

  int x = 0, y = 1; // 当前遍历的位置
  int px = 1, py = 0; // x/y 在当前循环方向的增量
  int pn = n; // 该方向上还需要多少个数字(会递减,因为顺时针往里缩)
  int sum = n; // 当前遍历方向的终点位置

  /** 目标输出顺时针 */
  // 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

  /** 翻转矩阵为逆时针(为了便于后面逻辑处理,输出的时候再翻转回去) */
  // 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; i <= n * n; i++) { // 翻转矩阵循环
   // 移到下一个点(第一次方向1->5 x增量为1, y的增量为0, 第二次方向为6->9,x增量为0,y增量为1,pn减少一个)
   x += px;
   y += py;
   rect[x][y] = i;
   if (i == sum) { // 到达该方向的最后一个点
    if (px == 1 || px == -1) { // x的增量不为0,则为竖向 -> 横向
     pn = pn - 1; // 竖向变为横向的时候,该方向上数字的个数会减少一个
     sum = sum + pn;
     py = px;
     px = 0;
    } else { // x的增量为0, y的增量不为0,则为横向 -> 竖向
     sum = sum + pn;
     px = -py;
     py = 0;
    }
   }
  }

  for (int i = 1; i <= n; i++) {
   for (int j = 1; j <= n; j++) {
    System.out.print(rect[j][i] + "\t"); // 翻转复原输出
   }
   System.out.println();
  }
 }

}

输出测试

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用java能带来一定的帮助,如果有疑问大家可以留言交流。


# 螺旋打印二维数组  # 二维数组顺时针输出  # java二维数组输出矩阵  # java二维数组遍历的2种代码  # Java数组的定义、初始化、及二维数组用法分析  # Java不指定长度的二维数组实例  # java实现二维数组转置的方法示例  # java实现二维数组转json的方法示例  # 浅谈java中的一维数组、二维数组、三维数组、多维数组  # java定义二维数组的几种写法(小结)  # Java二维数组查找功能代码实现  # 遍历  # 顺时针  # 不为  # 则为  # 这篇文章  # 移到  # 上还  # 往里  # 多少个  # 有疑问  # Java  # br 


相关文章: 北京网站制作公司哪家好一点,北京租房网站有哪些?  c# 服务器GC和工作站GC的区别和设置  制作网站公司那家好,网络公司是做什么的?  用v-html解决Vue.js渲染中html标签不被解析的问题  如何通过宝塔面板实现本地网站访问?  定制建站哪家更专业可靠?推荐榜单揭晓  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  济南专业网站制作公司,济南信息工程学校怎么样?  如何在橙子建站中快速调整背景颜色?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  建站之星导航如何优化提升用户体验?  平台云上自主建站:模板化设计与智能工具打造高效网站  怎么将XML数据可视化 D3.js加载XML  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  简历在线制作网站免费,免费下载个人简历的网站是哪些?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?  Thinkphp 中 distinct 的用法解析  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  如何在橙子建站上传落地页?操作指南详解  如何在Windows 2008云服务器安全搭建网站?  香港服务器租用费用高吗?如何避免常见误区?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  如何配置WinSCP新建站点的密钥验证步骤?  实惠建站价格推荐:2025年高性价比自助建站套餐解析  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  盐城做公司网站,江苏电子版退休证办理流程?  专业公司网站制作公司,用什么语言做企业网站比较好?  如何用AWS免费套餐快速搭建高效网站?  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  如何快速搭建高效香港服务器网站?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  如何制作网站标识牌,动态网站如何制作(教程)?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  网站制作员失业,怎样查看自己网站的注册者?  如何在万网主机上快速搭建网站?  建站之星2.7模板快速切换与批量管理功能操作指南  测试制作网站有哪些,测试性取向的权威测试或者网站?  营销式网站制作方案,销售哪个网站招聘效果最好?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  建站之星与建站宝盒如何选择最佳方案?  如何在宝塔面板中修改默认建站目录?  如何在景安服务器上快速搭建个人网站?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  如何续费美橙建站之星域名及服务?  详解jQuery中基本的动画方法  广平建站公司哪家专业可靠?如何选择?  ,如何利用word制作宣传手册?  油猴 教程,油猴搜脚本为什么会网页无法显示? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。