最初学习C语言时,看到国外程序员的内螺旋实现,都懵了,感觉超级复杂,一直没有去检查具体是如何实现的,最近又再次看到这种,想通过java语言也来完成这个方式,具体代码如下:
/** * * @author dennis zhao * General logical way of thinking * 2013-09-15 */ public class InnerSprialArray { /** * @param args */ public static void main(String[] args) { print(); for (int i = 0; i < result.length; i++) { for (int j = 0; j < result[i].length; j++) { int a = result[i][j]; if (a==1) { System.out.print((a < 10 ? "0" + a : a ) + "○" + "\t"); } else if (a == COL * ROW){ System.out.print((a < 10 ? "0" + a : a ) + "●" + "\t"); } else { System.out.print((a < 10 ? "0" + a : a ) + directions[i][j] + "\t"); } } System.out.println(); } } /** * simple logic: from left ---> right; top ---> down; right ---> left; down ---> top; * if find accessed element, it change direction */ private static void print() { int count = 0; int row = 0; int col = -1; while (count < COL * ROW) { // left to right col++; while (col < COL && initial[row][col] == 0) { initial[row][col] = 1;//if no access(0), it change this access flag = 1 count++; result[row][col] = count; directions[row][col] = "→"; col++; } col--;// last column minus 1 // top to down row++; while (row < ROW && initial[row][col] == 0) { initial[row][col] = 1; count++; result[row][col] = count; directions[row][col] = "↓"; row++; } row--;// last row minus 1 // right to left col--; while (col >= 0 && initial[row][col] == 0) { initial[row][col] = 1; count++; result[row][col] = count; directions[row][col] = "←"; col--; } col++;// last column add 1 // down to top row--; while (row >= 0 && initial[row][col] == 0) { initial[row][col] = 1; count++; result[row][col] = count; directions[row][col] = "↑"; row--; } row++;// last row add 1 } } private static int ROW = 10; private static int COL = 10; private static int [][]result = new int[ROW][COL];//record real value private static int [][]initial = new int[ROW][COL];// recod flag, 0 no access, 1 accessed private static String[][] directions = new String[ROW][COL];//record direction flag → ↓ ← ↑ }
效果图如下
相关推荐
本篇文章将详细讲解如何利用Java实现这个功能。 首先,我们需要理解螺旋数组的规律。螺旋数组从左上角开始,沿着顺时针方向依次填充数字。当一行或一列填满后,数组的遍历会转向下一圈。例如,对于5x5的数组,其...
在Java中实现n阶螺旋方阵是一项常见的编程任务,这有助于理解和掌握数组的操作以及循环控制结构的使用。下面我们将深入探讨如何用Java来实现这个功能。 首先,我们需要了解螺旋矩阵的基本概念。假设我们有一个n阶的...
内螺旋矩阵算法是一种在二维数组中填充数字的特殊方式,其特点是数字按顺时针方向从数组中心向外螺旋式地填充。这种填充模式在数据结构和算法的学习中颇为有趣,因为它涉及到了数组的操作以及对角线元素的处理。在...
以下是一个简单的Java实现,即`SpiralMatrix.java`文件可能包含的代码: ```java public class SpiralMatrix { public static void spiralPrint(int[][] matrix) { if (matrix == null || matrix.length == 0) ...
本文详细介绍了如何使用Java实现螺旋矩阵的生成。通过对核心变量和算法流程的分析,我们不仅理解了螺旋矩阵的基本概念,还学会了如何编写相应的程序来生成这种特殊的矩阵。未来可以通过探索不同的变体或扩展功能来...
下面我们将详细探讨螺旋矩阵的原理、Java实现方法以及相关知识点。 首先,让我们理解螺旋矩阵的概念。假设我们有一个n×n的二维数组,我们从左上角开始,沿着顺时针方向填充数字。当行或列到达边界后,我们会转向下...
对于填充逻辑,一般是从外向内螺旋填充数字,从1开始。对于奇数长度的数组,中心点位置的数字需要单独处理,因为其余数字在循环中已填充完毕。每完成一层的填充后,`len`和`count`变量的值需要更新,以处理下一圈的...
编程输出螺旋方阵. 螺旋方阵是指将从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。如4阶的螺旋方阵形式如下: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 要求:1)从键盘输入螺旋方阵的阶数
在 Java 编程中,打印数字螺旋图案是一项常见的练习,它有助于理解二维数组的遍历和控制流程。以下是一个简单的 Java 程序,用于根据给定的矩阵大小 `n` 打印出螺旋图案。这个程序的核心逻辑是通过一个二维数组 `...
### Java螺旋输出矩阵知识点解析 #### 一、题目要求与理解 题目要求用户输入一个正方形矩阵的大小,然后按照螺旋顺序输出该矩阵中的...通过以上解析,我们可以清晰地理解螺旋输出矩阵问题的算法思路及其Java实现方法。
1. **二维数组的使用**:通过二维数组`s1`来模拟并存储G型螺旋结构,便于后续的处理和可视化展示。 2. **循环与条件控制**:利用多重循环和条件判断来实现G型螺旋结构的动态生成。 3. **方向控制**:通过变量`d`来...
在解决这些问题时,还需要了解Java的基本语法,如变量声明、数据类型、流程控制(if、for、while等)、数组操作、字符串处理、函数定义和调用等。此外,良好的编程习惯,如代码结构清晰、注释充分,也是必不可少的。...
根据给定的文件标题“JAVA 回型结构”、描述“将黑方块与白方块排列成回型螺旋结构,大小可随意设定,小程序一个,字数要长”、标签“JAVA 回旋结构 数组”以及部分代码内容,我们可以深入探讨这个Java程序所涉及的...
1、假如我们在开发一个系统时需要对员工进行建模,员工包含 3 个属性:姓名、工号以及工资。经理也是员工,除了含有...7、写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。
在Java中实现杨辉三角形,可以帮助初学者理解数组和递归的概念。 8. **直角三角形**:这是一个基本的图形绘制练习,通过控制循环次数和输出字符,可以生成不同大小的直角三角形。 9. **菱形**:菱形的绘制需要考虑...
在这个Java项目中,我们将深入探讨如何用Java编程语言实现魔术广场算法。 首先,理解魔术广场的基本概念是必要的。一个n阶魔术广场是由n×n个单元格组成的,每个单元格内填入从1到n²的唯一数字。对于一个n阶魔术...
总结来说,"递归遍历矩阵.rar"可能包含了一个使用Java实现的递归遍历二维矩阵的示例,通过这样的代码,我们可以学习如何有效地处理和操作矩阵数据,这对于理解数据结构和算法有极大的帮助,特别是在解决涉及矩阵的...
掌握了这50道经典题目的Java实现方法,不仅能够提升你的算法能力,还能帮助你在面试中脱颖而出。下面将分别介绍这些题目的主题以及一些知识点。 **数组和字符串(Array/Strings)** 数组和字符串的处理是编程中最为...
螺旋矩阵和折线矩阵是两种在计算机科学中处理二维数组,特别是矩阵时常见的算法。它们在数据结构和算法设计中有着独特的应用,特别是在图形处理、矩阵运算和数据存储等方面。 **螺旋矩阵** 是一种将一个n×n的矩阵...