`
tory320
  • 浏览: 34166 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

自己写的一个螺旋矩阵的算法

阅读更多
<script type="text/javascript">
	function Direction(x, y) {
		this.x = x;
		this.y = y;
	}
	
	function generateMatrix(n) {
		var dim = Math.ceil(Math.sqrt(n));
		//var dim = n;
		var cen = Math.ceil(dim / 2) - 1;
		var arr = new Array();
		
		for (var i = 0; i < dim; i++) {
			arr[i] = new Array();
			for(var j = 0; j < dim; j++)
				arr[i][j] = 0;
		}
		
		var dirs = [];
		dirs[0] = new Direction(0, 1);
		dirs[1] = new Direction(1, 0);
		dirs[2] = new Direction(0, -1);
		dirs[3] = new Direction(-1, 0);
	
		var posX = cen;
		var posY = cen;
		arr[posX][posY] = 1;			
		var k = 1;
		var dirIdx = 0;
		var step = 1;
		while (k < n) {			
			for (var i = 0; i < 2; i++) {
				for (var j = 0; j < step; j++) {
					k++;
					if (k > n)
						break;
					var curDir = (dirIdx) % 4;
					arr[posX += dirs[curDir].x][posY += dirs[curDir].y] = k;	
				}
				dirIdx++;
			}
			step++;
			
		}
		
		document.write('<table>');
		for (var i = 0; i < dim; i++) {
			document.write("<tr>");
			for(var j = 0; j < dim; j++) {
			document.write("<td>");
				if (arr[i][j] == 0)
					document.write('*');
				else if (arr[i][j] < 10)
					document.write(" " + arr[i][j]);
				else
					document.write(arr[i][j]);
			document.write("</td>");
			}
			document.write("</tr>");
		}
		
		document.write('<table>');				
	}
	
	generateMatrix(25);
</script>
分享到:
评论
1 楼 qp3db 2010-09-20  
很不错!不过我想改进到FLASH中,不知道有什么指点,因为FLASH中没有TABLE啊。

相关推荐

    螺旋矩阵算法

    矩阵算法题。这道题主要是类似螺旋的数字排列,从外层1旋转到最中间。 让你更加了解二维数组和矩阵的相关的应用。这里主要是一个逻辑,转过弯就容易了。想了我1天呀。很值得, 很难得,分享给大家,希望对学C的同学...

    内螺旋矩阵算法

    内螺旋矩阵算法是一种在二维数组中填充数字的特殊方式,其特点是数字按顺时针方向从数组中心向外螺旋式地填充。这种填充模式在数据结构和算法的学习中颇为有趣,因为它涉及到了数组的操作以及对角线元素的处理。在...

    自己写的螺旋矩阵的算法

    包括了分割法和自己想的标记算法 可以通过修改N的值,实现不同大小的矩阵的打印

    c++ 螺旋矩阵 算法实现 源代码 原创

    螺旋矩阵是一种特殊的矩阵布局方式,它的...通过这些步骤,我们可以实现一个C++的螺旋矩阵算法。在压缩包中的源代码文件(未提供具体文件名)应该包含了上述逻辑,读者可以通过阅读代码来理解并学习这个算法的实现。

    螺旋矩阵算法对比.doc

    在探索螺旋矩阵算法时,我们可以从不同的编程语言和实现策略中观察到其多样性和灵活性。本文档将对三种不同的螺旋矩阵实现方法进行详细的比较和分析,包括C语言和C++语言的不同实现方式,以及它们各自的特点和适用...

    螺旋矩阵递归算法实现

    以下是一个简单的递归算法实现: ```cpp #include using namespace std; void fillSpiral(vector&lt;vector&lt;int&gt;&gt;& matrix, int startRow, int endRow, int startCol, int endCol, vector&lt;int&gt;& nums, int n) { if ...

    算法实例之一--螺旋矩阵VB程序

    在给定的VB代码片段中,可以看出它尝试实现一个生成螺旋矩阵的算法。虽然代码不完整,但可以大致理解其逻辑框架。这里提供一个较为完整的螺旋矩阵生成算法的VB实现示例: ```vb Option Explicit Private Sub ...

    螺旋矩阵和折线矩阵算法

    **螺旋矩阵** 是一种将一个n×n的矩阵按照特定顺序进行遍历的方式。想象一下,你从矩阵的左上角开始,沿着顺时针方向螺旋式地填充或读取矩阵元素。首先,你从左到右填充第一行,然后从上到下填充最后一列,接着逆...

    螺旋矩阵matlab源程序

    螺旋矩阵是数学和计算机科学中的一个有趣概念,尤其在图形处理和算法设计中有着重要的应用。在MATLAB这个强大的数值计算和矩阵运算平台中,编写螺旋矩阵生成的源程序不仅是一种基础练习,更是深入理解二维数组操作的...

    螺旋矩阵源码_VB.NET

    描述中的“螺旋矩阵示例”可能就是这样一个实现,可以提供具体的代码参考。 7. **调试与测试**: 完成螺旋矩阵的代码后,需要进行单元测试以确保矩阵正确生成。可以使用Debug.WriteLine或其他输出方式查看生成的...

    趣味矩阵算法实现源代码

    例如,一个函数可能用于生成螺旋矩阵,另一个可能用于生成主对角线和副对角线元素相同的对角矩阵。每个函数都会涉及到数组操作,以及根据特定规则移动指针或索引的过程。 在深入研究这些源代码时,我们可以学习到...

    螺旋矩阵VC6

    以下是一个3×3的螺旋矩阵填充示例: ``` 1 2 3 8 9 4 7 6 5 ``` 在这个例子中,我们可以看到数字从1开始,顺时针填充到9,形成一个外层螺旋。 在实现螺旋矩阵的VC6程序时,我们需要考虑以下几个关键点: 1. ...

    螺旋矩阵c语言实现(完整)

    螺旋矩阵是计算机编程中一个有趣的问题,尤其在学习C语言数组操作时,它可以作为一个很好的练习案例。螺旋矩阵的特点是元素按照顺时针或者逆时针方向排列,并且按照螺旋的形状填充整个矩阵。这种矩阵在图像处理、...

    螺旋矩阵代码和课程设计

    螺旋矩阵是一种特殊的矩阵排列方式,它从矩阵的左上角开始,沿着顺时针方向填入数字,当遇到边缘时,会转向下一个边界继续填充,直到所有元素都被填充完毕。在编程中,实现螺旋矩阵通常涉及到数组操作和循环控制。 ...

    c语言程序设计 螺旋矩阵

    螺旋矩阵是一种特殊的矩阵排列方式,它在编程中常被用作练习数据结构和算法的问题。在C语言程序设计中,创建螺旋矩阵涉及到数组操作、循环控制以及条件判断等基本概念。接下来,我们将深入探讨这些知识点。 1. **...

    C语言算法 螺旋矩阵

    打印输出螺旋矩阵,要求螺旋矩阵的阶数由用户输入

    c++实现在螺旋矩阵,有螺旋动画

    有螺旋动画”中,我们可以推断出这个程序不仅创建了螺旋矩阵,还可能通过某种方式将其动态展示出来,可能是通过控制台输出或图形用户界面(GUI)的形式,而描述中的“win32程序哦”表明这是一个基于Windows 32位API...

    螺旋矩阵类代码

    在计算机科学中,螺旋矩阵是一个有趣且具有挑战性的编程练习,它不仅考验程序员的逻辑思维能力,还要求他们对数组和循环结构有深刻的理解。本文将深入探讨螺旋矩阵类代码的实现细节,并提供一个完整的C语言程序示例...

    Java实现的打印螺旋矩阵算法示例

    主要介绍了Java实现的打印螺旋矩阵算法,结合完整实例形式详细分析了java打印螺旋矩阵的算法原理与实现技巧,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics