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螺旋数组源码java螺旋数组源码
用 C 编的螺旋数组 用 C 编的螺旋数组 用 C 编的螺旋数组 用 C 编的螺旋数组 用 C 编的螺旋数组
利用四个for循环实现逆时针和顺时针的螺旋数组
螺旋数组的java实现-----------------------------------------------------------------------------------------------------------
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++;...} }
大家都来下下..改进改进 我没积分了...我要下东西.... 大家都支持支持...
java螺旋数组有关Java面向对象编程指南 Java面向对象编程指南
螺旋数组问题,相信很多人都做过了,初学者可以看一下,应该会有用处的。
用Visual 2008编写的控制台应用程序,实现了螺旋数组的一些简单的功能
用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++递归实现螺旋数组的实例代码,代码简单易懂,非常不错,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
本代码是用c语言编写而成,实现了一个螺旋形状的方阵,所谓螺旋方阵就是一个二维数组,数组的值按照由外到内从小到大螺旋上升的一个数组方阵。