`

java打印N阶回旋矩阵

    博客分类:
  • java
 
阅读更多

算法分析:

1.将此矩阵分解为一个一个的圈,如下图,1-20可以看成一个圈,21-32是一个圈,33-36也是一个圈。



2.再将圈分解为四个均等的数列



3.打印的过程中用一个二维数组存储矩阵,记录圈数 ,当前圈的数列长度 和圈开始计数的数字 。

public class Matrix {
	public void printMatrix(int n){
		int array [][]  = new int[n][n];
		int circleCount ;	//圈数 
		
		int currentCircleLength = n-1;	//当前圈的数列长度
		
		int startNumber = 1;	// 圈开始计数的数字
		
		circleCount = n/2 + n%2;
		currentCircleLength = n-1;
		startNumber = 1;
		
		for(int i = 0; i < circleCount; i++){
			currentCircleLength = n - 1 - 2*i;
			
			for(int j = 0; j < currentCircleLength; j++){//→
				array[i][i+j] = startNumber++;
			}
			
			for(int j = 0; j < currentCircleLength; j++){//↓
				array[i+j][n-1-i] = startNumber++;		
			}
			
			for(int j = 0; j < currentCircleLength; j++){//←
				array[n-1-i][n-1-i-j] = startNumber++;	
			}
			
			for(int j = 0; j < currentCircleLength; j++){//↑
				array[n-1-i-j][i] = startNumber++;	
			}
			
		}
		if(n%2 == 1){//奇数补齐中间最后一个数
			array[n/2][n/2] = n*n;
		}
		for(int i = 0; i < n; i++){
			for(int j = 0; j < n; j++){
				System.out.print(array[i][j]+"		");
			}
			System.out.println("");
		}
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Matrix matrix = new Matrix();
		matrix.printMatrix(5);
	}

}

 

分享到:
评论

相关推荐

    求N阶回旋矩阵(C/C++)

    求N阶回旋矩阵,在给定阶数的二维数组外构建搜索边界,使用试探法求解

    回旋矩阵的C实现(希望给需要的人提供帮助)

    用C语言编写回旋矩阵,可以产生任意阶的回旋矩阵,包括矩阵,以及图形的表示,直观

    输出回旋矩阵(c语言)

    回旋矩阵,也被称为螺旋矩阵或旋转矩阵,是一种特殊的矩阵排列方式。在回旋矩阵中,元素会按照顺时针或者逆时针方向螺旋式地填充。这种矩阵在某些算法和数据结构问题中有着广泛的应用,例如在图像处理、数组遍历等...

    python实现回旋矩阵方式(旋转矩阵)

    在Python中,实现回旋矩阵(也称为螺旋矩阵或旋转矩阵)是一个有趣且具有挑战性的任务。通过构建一个按螺旋顺序填充数字的矩阵,可以加深对数组操作和循环控制的理解。本文将详细探讨如何使用Python结合numpy库来...

    C#中的回旋矩阵

    4. **输出结果**:最后,通过双重循环遍历整个矩阵,并打印出每个元素。 #### 代码分析 ```csharp static bool panduan(int x, int y) { if (x || x &gt;= shuzu.GetLength(0) || y || y &gt;= shuzu.GetLength(0)) ...

    基于C的回旋数

    1. **边界条件**:回旋数矩阵通常以一个固定的大小开始,如2x2、3x3等,然后随着需要填充的数字数量增加,矩阵的尺寸也会相应地增大。 2. **顺序规则**:数字填充遵循一定的顺序,通常是从左上角开始,沿着顺时针...

    C# 回旋数 控制台程序

    回旋数,也被称为螺旋数或旋转数,是一种在矩阵中按照特定顺序排列的数字模式。在C#编程中,创建一个控制台程序来展示回旋数矩阵是一种很好的练习,可以提升对数组和循环控制的理解。这个程序的核心是通过嵌套的for...

    Gyroklystron.rar_matlab回旋管_回旋管_电子回旋波

    回旋管,也称为回旋速调管,是一种利用电子回旋共振原理工作的微波放大器件,广泛应用于雷达、通信和粒子加速器等领域。在本文中,我们将深入探讨回旋管的基本原理、Matlab在回旋管计算中的应用以及如何理解和使用`...

    Matlab 三维回旋仿真_matlab三维回旋仿真_

    在Matlab中进行三维回旋仿真是一个非常实用的技术,尤其对于物理、工程以及计算机图形学等领域的研究者和学生来说。本项目旨在为新手提供一个学习和交流的基础平台,帮助他们理解如何利用Matlab来模拟物体在三维空间...

    Java技术教程.基础篇

    Java技术教程.基础篇主要涵盖了Java编程语言的基本概念、语法和核心特性,是学习Java编程的入门指南。这篇教程旨在帮助初学者理解并掌握Java语言的基础知识,为更深入的Java开发打下坚实的基础。 首先,Java语言...

    回旋算法代码

    需要注意的是,回旋排序的时间复杂度为O(n^2),属于效率较低的排序算法,适用于小规模或部分有序的数组。对于大规模数据或完全无序的数据,更适合采用如快速排序、归并排序等更高效的排序算法。 总的来说,回旋排序...

    java-leetcode面试题解哈希表第447题回旋镖的数量-题解.zip

    在LeetCode的第447题中,我们给定一个包含n个点的数组,任务是找出所有可能的回旋镖组合数量。 哈希表在这里的角色主要是用来存储每个点与其周围距离相等的点的关系,以便于快速查找潜在的回旋镖组合。具体步骤如下...

    回旋镖及其机械动力

    【回旋镖及其机械动力】主要探讨的是机械动力学中的一种特殊现象——回旋镖的飞行原理。回旋镖,又称飞去来器,是一种源自澳大利亚原住民的传统工具,因其独特的飞行特性,即在投掷后能返回到投掷者手中,而备受关注...

    JAVA G型结构

    ### JAVA G型结构知识点解析 #### 一、G型回旋结构概述 G型回旋结构是一种特定的数据填充模式,其基本思想是在一个二维数组中按照特定规则填充数据,形成类似字母“G”的螺旋形状。这种结构在算法设计、游戏开发等...

    Java飞机大战

    游戏已经实现了激光武器,散射武器,回旋武器,以及僚机和敌机的设计,基本上功能齐全,后续功能的添加由于优质的代码设计而变得异常简单,最近打算继续研究Java3D,该游戏不打算继续维护,如果有需要的朋友或者想要...

    foobar 回旋混音器

    foobar 回旋混音器

    AdS中大量带电粒子的大规模颤振矩阵模型

    我们提出了一类新的N = 4 $$ \ mathcal {N} = 4 $$超对称颤动矩阵模型,并认为它描述了三维反de Sitter( AdS)通量压缩。 这些模型的拉格朗日模型与先前研究的颤动矩阵模型不同,其存在与AdS引力势相关的质量项以及...

    qy_高阶模THz电子回旋脉塞注波互作用研究.caj

    qy_高阶模THz电子回旋脉塞注波互作用研究.caj

Global site tag (gtag.js) - Google Analytics