`
zsnlovewl
  • 浏览: 176385 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

螺旋矩阵(顺时针内转)

    博客分类:
  • JAVA
J# 
阅读更多
import java.util.Arrays;

public class SpiralMatrix {
	/**
	 * @param args
	 * @author zhangshaonian
	 */
	public static void main(String[] args) {
		int[][] base = spiralMatrix(3);
		for (int i = 0; i < base.length; i++) {
			System.out.println(Arrays.toString(base[i]));
		}

	}

	private static int[][] spiralMatrix(int num) {
		int size = num;
		int[][] m = new int[size][size];
		int circleNum = num / 2 + num % 2;//圈数
		int count = 1;
		int startX = 0;
		int startY = 0;
		for (int i = 0; i < circleNum; i++) {
			int subSize = num - 2 * i;//每个边上有多少个数
			// 计算右
			for (int j = 0; j < subSize; j++) {

				if (j == subSize - 1) {
					m[startX][startY] = count++;
					startX++;// 向下拐弯
				} else {
					m[startX][startY++] = count++;
				}

			}
			// 计算下
			for (int j = 0; j < subSize - 1; j++) {
				if (j == subSize - 2) {
					m[startX][startY] = count++;
					startY--;// 向左拐弯
				} else {
					m[startX++][startY] = count++;
				}

			}
			// 计算左
			for (int j = 0; j < subSize - 1; j++) {
				if (j == subSize - 2) {
					m[startX][startY] = count++;
					startX--;// 向上拐弯
				} else {
					m[startX][startY--] = count++;
				}

			}
			// 计算上
			for (int j = 0; j < subSize - 2; j++) {
				if (j == subSize - 3) {
					m[startX][startY] = count++;
					startY++;// 向右拐弯
				} else {
					m[startX--][startY] = count++;
				}

			}

		}
		return m;

	}
}

 

分享到:
评论

相关推荐

    螺旋矩阵matlab源程序

    螺旋矩阵是一种特殊的矩阵排列方式,它将数字按照顺时针或逆时针方向从左上角开始,沿着螺旋路径填充矩阵。在给定的MATLAB源程序中,我们看到两个程序,分别实现了顺时针和逆时针的螺旋矩阵。 1. 顺时针螺旋矩阵: ...

    螺旋矩阵源码_VB.NET

    螺旋矩阵是一种特殊的矩阵排列方式,它从矩阵的最外层开始,按照顺时针或逆时针方向螺旋式地填充元素。在VB.NET编程环境中,实现螺旋矩阵可以帮助开发者理解和掌握数组操作、循环控制以及基本算法设计。以下是关于...

    c语言螺旋矩阵大作业报告.docx

    1. **左上角顺时针螺旋矩阵**: 这种矩阵从左上角开始,沿着顺时针方向填充数字。代码中使用四个嵌套循环,分别负责向右、向下、向左和向上填充,每次循环后适当调整行和列的边界。对于奇数大小的矩阵,还需处理...

    螺旋矩阵代码和课程设计

    螺旋矩阵是一种特殊的矩阵排列方式,它从矩阵的左上角开始,沿着顺时针方向填入数字,当遇到边缘时,会转向下一个边界继续填充,直到所有元素都被填充完毕。在编程中,实现螺旋矩阵通常涉及到数组操作和循环控制。 ...

    螺旋矩阵和折线矩阵算法

    螺旋矩阵和折线矩阵是两种在计算机科学中处理二维数组,特别是矩阵时常见的算法。它们在数据结构和算法设计中有着独特的应用,特别是在图形处理、矩阵运算和数据存储等方面。 **螺旋矩阵** 是一种将一个n×n的矩阵...

    螺旋矩阵c语言源码.zip

    螺旋矩阵是一种特殊的矩阵排列方式,它以螺旋状填充矩阵元素,从左上角开始,顺时针方向旋转填充。在C语言中实现螺旋矩阵通常涉及到二维数组的操作,这对于理解和掌握C语言的基础语法以及数组操作至关重要。 首先,...

    java编写的螺旋矩阵很经典

    在Java中,实现螺旋矩阵通常采用两个嵌套循环,外层循环控制每一层的填充,内层循环则负责当前层的具体填充。我们需要维护四个边界变量,分别表示当前层的左、右、上、下边界,并根据填充情况动态更新这些边界。同时...

    螺旋矩阵c语言写法示例

    螺旋矩阵是一种特殊的矩阵排列方式,它按照顺时针或逆时针方向螺旋式地填充数字。在C语言中实现螺旋矩阵通常涉及到二维数组的操作。本文将深入探讨如何使用C语言来编写螺旋矩阵的代码,以及相关的重要知识点。 首先...

    js代码-螺旋矩阵,按顺时针生成矩阵

    螺旋矩阵是一种特殊的矩阵排列方式,它按照顺时针方向从左上角开始填充数字,每完成一圈后,下一次填充会在上一圈的基础上向内移动一行或一列。这种矩阵在编程挑战和数据结构学习中常见,它能有效地展示数组操作和...

    螺旋矩阵 c语言

    C语言实现螺旋矩阵的核心代码通常包含两层嵌套循环,外层循环控制层数,内层循环控制每层的填充。这里以顺时针填充为例: ```c #include void printSpiralMatrix(int n) { int matrix[n][n]; int rowStart = 0,...

    C语言 经典题目螺旋矩阵 实例详解

    螺旋矩阵是一种特殊的矩阵,它的元素按照顺时针的方向螺旋式地填充。在C语言中,实现螺旋矩阵通常涉及二维数组的处理。以下是对这个经典题目的详细解释。 首先,我们来看一下程序的主要部分: ```c #include #...

    C语言入门-leetcode练习之第59题螺旋矩阵II.zip

    螺旋矩阵是一种特殊的矩阵排列方式,它从矩阵的最外层开始,按照顺时针方向进行填充,每填充完一层就转到下一层内部继续填充。在C语言中,实现这样的功能可以作为对数组操作和逻辑思维能力的练习。LeetCode网站上的...

    luoxuan.rar_螺旋

    螺旋矩阵是一种特殊的矩阵排列方式,它将数字按照顺时针或逆时针的顺序填充到矩阵中,形成一种螺旋状的路径。这个“luoxuan.rar_螺旋”压缩包文件包含了一个实现螺旋矩阵生成的小程序,名为“luoxuan.cpp”,以及一...

    螺旋方阵代码

    螺旋方阵代码是一种在计算机编程中用于生成特定矩阵结构的算法。这种算法能够按照螺旋顺序填充一个n阶方阵,并按顺时针方向输出。在给出的代码示例中,我们可以通过详细的分析来理解其工作原理和技术细节。 ### ...

    luoxuan.rar_visual c

    螺旋矩阵,又称螺旋阵列,是从矩阵的最外层开始,顺时针或逆时针方向逐圈填充数字。例如,一个3x3的螺旋矩阵可以这样填充: ``` 1 2 3 8 9 4 7 6 5 ``` 在C++中实现螺旋矩阵的输出,主要涉及以下知识点: 1. **二...

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

    需要注意的是,代码中有一个小技巧,即先翻转矩阵使其变为逆时针,这样可以简化后续的逻辑处理,但在输出时再将其翻转回顺时针顺序。 输出测试部分确保了程序能够正确地按照预期运行,显示了螺旋数组的正确顺序。 ...

    shujujiegou.rar_螺旋

    螺旋矩阵是一种特殊的数据结构,常在编程和算法竞赛中出现,用于解决各种问题。它具有二维数组的形式,但元素的填充顺序遵循一个螺旋路径,从矩阵的某一边开始,沿着顺时针或逆时针方向螺旋式地填入。这种矩阵在处理...

    用 C 编的螺旋数组

    螺旋数组,又称螺旋矩阵,是一种特殊的二维数组布局方式,它按照顺时针或逆时针方向从外向内填充数字。在C语言中实现螺旋数组,我们需要理解数组的基本操作、循环控制以及条件判断。下面我们将深入探讨这个话题。 ...

    C语言大作业(三个操作题)

    螺旋矩阵是一种特殊的二维数组,元素从左上角开始,沿着顺时针方向填充。给定一个正整数N(2≤n≤9),我们可以使用嵌套循环来构建这个矩阵。初始化一个n*n的二维数组,外层循环控制每一圈的开始位置,内层循环则...

Global site tag (gtag.js) - Google Analytics