最近看到一道有点意思的逻辑算法题,便着手实现一下。题目是要求打印 出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小时内与您取得联系。