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

螺旋数组

 
阅读更多
function circleNumber(n){
	var re = [];
	
	/**
		1表示右
		2表示下
		3表示左
		4表示上
	*/
	var currentPos = 1;
	/**定义初始1的xy坐标*/
	var xy = null;
	var max = n * n;
	/**
		生成空数组
	*/
	function initMap(){
		for(var i= 0 ; i < n ; i++){
			var tmp = [];
			for(var j = 0 ; j < n ; j++ ){
				tmp.push(0);
			}
			re.push(tmp);
		}
	}
	
	/**
		找到1的位置
	*/
	function firstPos(){
		if(n%2 == 1){	// 如果是奇数,1就在正中心位置
			var posx = parseInt(n/2),
				posy = parseInt(n/2);
			re[posx][posy] = 1;
			xy = {x:posx,y:posy};
		}else{
			var posx = parseInt((n-1)/2),
				posy = parseInt((n-1)/2);
			re[posx][posy] = 1;
			xy = {x:posx,y:posy};
		}
	}
	
	/**
		按顺序依次填充所有的数字位置
	*/
	function step(){
		var n = 2;
		
		while(n <= max){	
			switch(currentPos){
				case 1:// 
					if(re[xy.x][xy.y+1] == 0){
						re[xy.x][xy.y+1] = n;
						n++;
						xy = {x:xy.x,y:xy.y+1};
						currentPos++;
					}else{
						if(currentPos == 1){
							currentPos = 4;
						}else{
							currentPos--;
						}
					}
					break;
				case 2:// 
					if(re[xy.x+1][xy.y] == 0){
						re[xy.x+1][xy.y] = n;
						xy = {x:xy.x+1,y:xy.y};
						currentPos++;
						n++;
					}else{
						if(currentPos == 1){
							currentPos = 4;
						}else{
							currentPos--;
						}
					}
					break;
				
				case 3://
					if(re[xy.x][xy.y-1] == 0){
						re[xy.x][xy.y-1] = n;
						xy = {x:xy.x,y:xy.y-1};
						currentPos++;
						n++;
					}else{
						if(currentPos == 1){
							currentPos = 4;
						}else{
							currentPos--;
						}
					}
					break;
				case 4://
					if(re[xy.x-1][xy.y] == 0){
						re[xy.x-1][xy.y] =n;
						xy = {x:xy.x-1,y:xy.y};
						currentPos = 1;
						n++;
					}else{
						if(currentPos == 1){
							currentPos = 4;
						}else{
							currentPos--;
						}
					}
					break;
				default:
					break;
			}
		}
		console.log("end");
	}
	
	initMap();
	firstPos();
	step();
	print();
	
	/**
		螺旋数组
	*/
	function print(){
		var msg = "";
		for(var i = 0 ; i < re.length ; i++){
			for(var j = 0 ; j < re[i].length ; j++){
				msg += " "+re[i][j];
			}
			msg += "\n";
		}
		alert(msg);
	}
}
circleNumber(3);

 

 

将代码复制到console中运行即可

分享到:
评论

相关推荐

    java螺旋数组代码

    ### Java螺旋数组实现详解 #### 一、螺旋数组概述 螺旋数组是指按照螺旋形路径填充或遍历一个二维数组的方式。这种数据结构及其操作在实际编程应用中具有一定的实用价值,尤其是在解决某些特定问题时,如矩阵旋转...

    用 C 编的螺旋数组

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

    C++螺旋数组

    螺旋数组,也称为螺旋矩阵,是一种特殊的二维数组排列方式,其特点是元素按照顺时针或逆时针方向从外向内填充。在C++编程中,实现螺旋数组的填充和打印是一项常见的数据结构与算法练习。这个主题通常涉及到数组操作...

    利用for循环实现螺旋数组

    利用四个for循环实现逆时针和顺时针的螺旋数组

    螺旋数组的java实现----------------------------------------

    螺旋数组的java实现-----------------------------------------------------------------------------------------------------------

    解决输出顺时针螺旋数组问题【寻路算法】

    "输出顺时针螺旋数组"是一个常见的算法问题,它涉及到数组操作和逻辑思维。这个问题的主要目标是将一个二维数组按照顺时针方向输出,即从左上角开始,沿着外层边界螺旋式地遍历整个数组。寻路算法在这里扮演着关键...

    C++语言写的螺旋数组

    螺旋数组,也称为螺旋矩阵,是一种特殊的二维数组排列方式,其特点是元素按照顺时针或逆时针方向从外向内连续填充。在C++编程中实现螺旋数组,需要掌握基本的数组操作、循环控制以及条件判断。接下来,我们将深入...

    C经典算法源程序\数组之螺旋数组

    #include"stdio.h" #include"iostream.h" int array[11][11]; int temp; int ROW; void godown(int &m,int &a) { for(temp=1;temp;temp++) if(array[temp][a]==0) array[temp][a]=m++;...} }

    C语言实现的螺旋数组,面试必备

    ### C语言实现螺旋数组 #### 知识点概述 本文将详细介绍如何使用C语言实现一个螺旋数组,并通过示例代码来解析其实现过程。螺旋数组是指一个正方形矩阵中的元素按照螺旋顺序填充的过程,通常从左上角开始,顺时针...

    打印螺旋数组(新手编的)

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

    螺旋数组 java下载

    java螺旋数组有关Java面向对象编程指南 Java面向对象编程指南

    C语言解决螺旋数组问题

    螺旋数组问题,相信很多人都做过了,初学者可以看一下,应该会有用处的。

    vc6.0螺旋数组

    用vc++6.0编写实现螺旋数组,并经过调试之后可以使用,欢迎大家的下载。

    矩形螺旋数组的c#实现

    昨天去面试 公司出了一题螺旋数组 输入 5 输出 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 当场让我编写,当时比较紧张 没有写出来,回来想了想 其实也不难,附上代码实现,希望能帮到...

    C++递归实现螺旋数组的实例代码

    在编程领域,螺旋数组是一种特殊的二维数组布局,其中元素按照顺时针或逆时针的螺旋顺序填充。C++中的螺旋数组可以通过递归方法实现,这样的实现方式既直观又易于理解。本文将详细探讨如何使用C++递归来创建螺旋数组...

    螺旋矩阵--数组的运用

    螺旋矩阵--数组的运用,昨晚后我还是满有成就感的...刚学程序。不容易啊

    c++ 蛇形数组 倒三角

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

    xunhuan.rar_循环数组

    本程序“xunhuan.rar”是用C语言编写的,旨在实现螺旋数组的生成,这是一种将二维数组以螺旋方式填充数值的方法。 螺旋数组的填充规则是从左到右、从上到下、从右到左、从下到上依次进行,形成一个类似螺旋的路径。...

Global site tag (gtag.js) - Google Analytics