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

蛇形数组

 
阅读更多
package org.jf.alg;

/**
 * 蛇形数组
 * 
 * n=3
 * 1 2 3 
 * 8 9 4
 * 7 6 5
 * 最基本的直观爬行方式实现
 * @author junfeng.chen
 *
 */
public class SnakeArray 
{

	private int array[][] = null;
	private int k = 0;
	public SnakeArray(int n)
	{
		array = new int[n][n];
		k = n*n;
		init();
	}
	
	public SnakeArray(int m,int n)
	{
		array = new int[m][n];
		k=m*n;
		init();
	}
	
	/**
	 * print array
	 * 
	 * for i = 
	 * 
	 */
	public void print()
	{
		
		
		
		int i=0,j=0;
		for(i=0;i<array.length;i++)
		{
			for(j=0;j<array[i].length;j++)
			{
				System.out.print(array[i][j]+"  ");
			}
			System.out.println();
		}
	}
	
	private void init()
	{
		int i=0,j=0,n=1;//i 行 j列
		while(n<=k)
		{
			
			while(j<array[0].length&&array[i][j]==0&&n<=k)//move right
			{
				array[i][j++]=n++;
			}
			
			i++;
			j--;
			while(i<array.length&&array[i][j]==0&&n<=k)//move down
			{
				array[i++][j]=n++;
			}
			
			i--;
			j--;
			while(j>=0&&array[i][j]==0&&n<=k)//move left
			{
				array[i][j--]=n++;
			}
			
			i--;
			j++;
			while(i>0&&array[i][j]==0&&n<=k)//move up
			{
				array[i--][j] = n++;
			} 
			i++;
			j++;
		}
			
	}
	
	
	public static void main(String args[])
	{
		SnakeArray  snake = new SnakeArray(10);
		snake.print();
		
		System.out.println();
		 snake = new SnakeArray(8,5);
		snake.print();
	}
	
}

分享到:
评论

相关推荐

    JAVA蛇形数组(向下开始)

    在编程领域,蛇形数组(也称为锯齿形数组或螺旋数组)是一种特殊的二维数组布局,其中元素按照从左到右、从上到下、再从右到左、从下到上的顺序填充,形成类似蛇行的路径。这种布局常用于解决特定问题,如数据存储和...

    c++ 蛇形数组 倒三角

    在编程领域,蛇形数组(Spiral Matrix)是一种特殊的二维数组排列方式,它按照从左上角开始,先向右填充,然后向下,接着向左,最后向上这样的顺序不断循环,形成一种类似蛇行的路径。在ACM(国际大学生程序设计竞赛...

    蛇形数组的建立与输出demo

    建立蛇形数组,并输出运行,可以更改参数,内附源代码,很方便。

    C++蛇形数组(数字倒三角)

    "蛇形数组(数字倒三角)"是一种特殊的矩阵排列方式,通常出现在算法竞赛或编程练习中,例如重庆大学ACM竞赛中的第一题。这个题目要求使用C++编程语言,将数字按照特定的“蛇形”路径填充到一个二维数组中,并将结果...

    利用数组打印蛇形数图形

    现在需要解决以下问题,第一个,如何使得数组按照蛇形数组的排列方式排列,第二个程序中输入多少就会产生一个多少乘多少的数据,如果一开始就定义好数组的内存单元数量,就会产生溢出,或者浪费内存单元的问题,这些...

    基于动态开辟的反向动态蛇形数.c

    之前有上传过一次基于动态开辟的正向动态开辟蛇形数组,这次我做了一个类似的基于动态开辟的反向动态开辟蛇形数组,包含的技术点有动态开辟,Switch语句的使用,还有Windows函数库的使用等,在编写代码的时候我是...

    蛇形矩阵(用二元数组实现)

    在编程领域,特别是在学习数组和循环结构时,蛇形矩阵是一个经典的练习题目,因为它涉及到对数组的高效操作和逻辑思考。 在C++中实现蛇形矩阵,通常会用到二维数组(二元数组)。下面将详细解释其原理和实现步骤: ...

    综合练习题目-2016.docx

    在这个综合练习中,我们涉及了多个编程相关的知识点,包括蛇形数组填值、概率游戏分析、集合运算以及克鲁斯卡尔算法。下面将逐一详细解释这些概念和算法。 1. 蛇形数组填值: 蛇形数组是一种特殊的二维数组,元素...

    使用二维数组和双重循环打印蛇形矩阵

    使用二维数组和双重循环打印蛇形矩阵使用二维数组和双重循环打印蛇形矩阵使用二维数组和双重循环打印蛇形矩阵

    C++蛇形填数

    只是简单实现蛇形填数C++,还没考虑提高时间效率空间效率的提高。

    LeetCode算法蛇形走位-leetcode:个人算法学习代码

    LeetCode算法蛇形走位 leetcode 个人算法学习代码,欢迎一起学习讨论! 数据结构 数组 -[x] 实现动态扩容数组 -[x] 实现有序数组 -[x] 合并两个有序数组 -[x] 简单:169.多数元素 -[x] 简单:1.两数之和 -[x] 简单:...

    变态的蛇形排序算法。

    在C#中,蛇形排序的基本思路是先对数组的一行或一列进行升序排序,然后改变填充方向。例如,对于一个n×m的矩阵,我们首先将第一行按照升序排列,然后填充第二行但按照降序排列,接着是第三行升序,以此类推。当行数...

    蛇形方阵_C语言_C语言蛇形输出_蛇形方阵_

    在C语言中实现蛇形方阵,需要对数组操作和循环控制有深入的理解。下面我们将详细探讨这个主题。 首先,让我们定义蛇形方阵:它是一个二维数组,其元素按照蛇的移动路径(上下左右交替)进行填充。例如,一个3x3的...

    蛇形矩阵c++程序(数值排列)

    蛇形矩阵,也被称为“螺旋矩阵”,是一种特殊的二维数组,其元素按照螺旋形状填充。在C++编程中,实现蛇形矩阵通常涉及到数组操作、循环控制以及条件判断。以下是对这个话题的详细解释: 首先,我们需要理解蛇形...

    信息奥赛课课通p174-蛇形数字三角形

    信息奥赛课课通P174-1,蛇形数字三角形的C++程序代码。

    c语言蛇形阵

    在C语言中实现蛇形阵,主要涉及二维数组的操作和循环控制。 首先,我们需要理解二维数组的概念。在C语言中,二维数组可以看作是由多个一维数组组成的数组,每个一维数组代表矩阵的一行。例如,一个n行m列的二维数组...

    1.8编程基础之多维数组(25题)

    2018/07/19 周四 21:32 &lt;DIR&gt; . 2018/07/19 周四 21:32 &lt;DIR&gt;...2018/06/14 周四 21:32 728 24蛇形填充数组.cpp 2018/06/14 周四 21:43 1,360 25螺旋加密.cpp 25 个文件 16,080 字节 2 个目录 1,989,103,616 可用字节

    打印数组(新手编的.一个蛇行数组,)

    大家都来下下.改进改进.. 我没积分下东西了.. 大家都下下...

    c语言编写n阶蛇形方阵

    ### C语言实现n阶蛇形方阵的生成与解析 #### 背景与目标 在计算机科学领域,数组和矩阵的处理是基础且重要...蛇形方阵的生成过程涉及到循环控制、条件判断以及数组操作等核心编程概念,是学习和实践C语言的良好案例。

    解题训练 蛇形矩阵.doc

    程序首先读取用户输入的矩阵边长`a`,然后按照蛇形路径填充数组`u`。在填充过程中,使用四个循环来模拟蛇的四个移动方向:右、下、左、上。变量`t`用来跟踪当前填充的数字,`n`记录填充的次数,以便在所有位置填满后...

Global site tag (gtag.js) - Google Analytics