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螺旋数组实现详解 #### 一、螺旋数组概述 螺旋数组是指按照螺旋形路径填充或遍历一个二维数组的方式。这种数据结构及其操作在实际编程应用中具有一定的实用价值,尤其是在解决某些特定问题时,如矩阵旋转...
螺旋数组,又称螺旋矩阵,是一种特殊的二维数组布局方式,它按照顺时针或逆时针方向从外向内填充数字。在C语言中实现螺旋数组,我们需要理解数组的基本操作、循环控制以及条件判断。下面我们将深入探讨这个话题。 ...
螺旋数组,也称为螺旋矩阵,是一种特殊的二维数组排列方式,其特点是元素按照顺时针或逆时针方向从外向内填充。在C++编程中,实现螺旋数组的填充和打印是一项常见的数据结构与算法练习。这个主题通常涉及到数组操作...
利用四个for循环实现逆时针和顺时针的螺旋数组
螺旋数组的java实现-----------------------------------------------------------------------------------------------------------
"输出顺时针螺旋数组"是一个常见的算法问题,它涉及到数组操作和逻辑思维。这个问题的主要目标是将一个二维数组按照顺时针方向输出,即从左上角开始,沿着外层边界螺旋式地遍历整个数组。寻路算法在这里扮演着关键...
螺旋数组,也称为螺旋矩阵,是一种特殊的二维数组排列方式,其特点是元素按照顺时针或逆时针方向从外向内连续填充。在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语言实现一个螺旋数组,并通过示例代码来解析其实现过程。螺旋数组是指一个正方形矩阵中的元素按照螺旋顺序填充的过程,通常从左上角开始,顺时针...
大家都来下下..改进改进 我没积分了...我要下东西.... 大家都支持支持...
java螺旋数组有关Java面向对象编程指南 Java面向对象编程指南
螺旋数组问题,相信很多人都做过了,初学者可以看一下,应该会有用处的。
用vc++6.0编写实现螺旋数组,并经过调试之后可以使用,欢迎大家的下载。
昨天去面试 公司出了一题螺旋数组 输入 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++递归来创建螺旋数组...
螺旋矩阵--数组的运用,昨晚后我还是满有成就感的...刚学程序。不容易啊
在编程领域,蛇形数组(Spiral Matrix)是一种特殊的二维数组排列方式,它按照从左上角开始,先向右填充,然后向下,接着向左,最后向上这样的顺序不断循环,形成一种类似蛇行的路径。在ACM(国际大学生程序设计竞赛...
本程序“xunhuan.rar”是用C语言编写的,旨在实现螺旋数组的生成,这是一种将二维数组以螺旋方式填充数值的方法。 螺旋数组的填充规则是从左到右、从上到下、从右到左、从下到上依次进行,形成一个类似螺旋的路径。...