`

数字绕圈算法 JS 实现

 
阅读更多

这是一道某公司的算法题,我们姑且称之为“数字绕圈算法”。

题目:给定一个数字N,以此生成一个N^2的二维矩阵,以某个方向为基准从1开始填充数字。假设数字5那么开始绕圈,最终的结果显示为:

1       16      15     14     13

2       17      24     23     12

3       18      25     22     11

4       19      20     21     10

5         6        7       8       9

 

代码如下:

var num = 3, res; // 定义全局变量
document.getElementById('btn').onclick = function(){
	num = parseInt(document.getElementById('num').value) || num;
	res = [];
	for(var i =0;i<num; i++){
		res[i] = [];
		for(var v=0;v<num;v++)	res[i][v] = '';
	}
	calc(num);
	print();
}
//递归的算法
var calc = function(n, r){
	r = r || 0; // 圈数
	var x=y=0, // 初始化坐标
		start = r, // 开始位置
		end = n-1, // 结束位置
		startNum= !r ? 1 : n * 4 * r +1; //显示的数字
	// 奇数情况下判断是否是最后一个数字
	if (start==end){
		res[start][start] = Math.pow(num,2);
		return;
	}
	// 四个方向填充
	for(x=start; x<end; x++){
		res[x][r] = startNum++;
	}
	for(y=start; y<end; y++){
		res[x][y] = startNum++;
	}
	for(; x>r; x--){
		res[x][y] = startNum++;
	}
	for(; y>r; y--){
		res[x][y] = startNum++;
	}
	// 偶数情况下判断判断完结
	if ( x>Math.ceil(n/2)){
		return;
	}
	calc(--n, ++r);
}
//显示结果
var resDiv = document.getElementById('res');
var print = function(){
	var str = [];
	for(var i in res){
		for(var m in res[i]){
			str.push('<div>', res[i][m], '</div>');
		}
		str.push('<br/>');
	}
	resDiv.innerHTML = str.join('');
}

 

  • 大小: 5 KB
分享到:
评论

相关推荐

    面试题 数字绕圈(含答案)

    这道名为“面试题 数字绕圈(含答案)”的题目是面试中常见的逻辑思维与编程挑战,尤其在IT行业中,这种类型的问题被用来评估应聘者的观察力、问题解决能力和编程技能。通常这类问题会涉及一定的数学规律和编程实现,...

    PID算法相关资料数字PID控制算法C语言实现PID算法等源码及技术文档资料合集.zip

    PID算法相关资料数字PID控制算法C语言实现PID算法等源码及技术文档资料合集: 51单片机PID算法程序_三_增量式PID控制算法.pdf AN_SPMC75_0012 ARDUINO C语言PID算法.pdf C语言实现PID算法-27.pdf C语言实现PID算法-28...

    基于matlab的数字图像增强算法研究与实现.doc

    基于Matlab的数字图像增强算法研究与实现 数字图像增强是一种非常重要的图像处理技术,旨在提高图像的质量和可读性。在图像获取和传输过程中,图像易受到各种噪声的干扰,使图像的质量下降,对图像分析不利。因此,...

    精通Visual C ++数字图像处理典型算法及实现 第2版

    《精通Visual C++数字图像处理典型算法及实现 第2版》是一本专注于使用C++进行数字图像处理的专著,适合对计算机视觉、图像处理感兴趣的开发者和学生阅读。该书结合了理论与实践,深入浅出地介绍了各种关键的图像...

    Visual C++数字图像处理典型算法及实现(PDF+源码)

    《Visual C++数字图像处理典型算法及实现》一书,主要涵盖了C++在数字图像处理领域的广泛应用和技术。作为一本已绝版的专业书籍,它对于学习和研究C++图像处理技术的人来说,具有很高的参考价值。书中深入浅出地讲解...

    数字信号处理 理论 算法与实现.配书光盘.C.Fortran.Matlab.rar_胡广书

    《数字信号处理:理论、算法与实现》是胡广书教授撰写的一本经典教材,它深入浅出地探讨了数字信号处理的各个方面。这本教材的第二版配备了一个光盘,包含了C语言、FORTRAN和MATLAB的源代码,旨在帮助读者更直观地...

    数字信号处理理论算法与实现(胡广书).的Matlab代码及参考文献

    《数字信号处理理论、算法与实现》是2003年清华大学出版社出版的图书,作者是胡广书。绪论 O.1数字信号处理的理论 O.2数字信号处理的实现 0.3数字信号处理的应用 O.4关于数字信号处理的学习 参考文献 上篇经典数字...

    数字信号处理 理论算法与实现 胡广书 第二版 源程序

    《数字信号处理:理论算法与实现》是胡广书教授的经典著作,第二版更是深受广大读者和学习者喜爱。这本书深入浅出地介绍了数字信号处理的基础理论、算法以及其实现方法,是通信工程、电子工程、计算机科学等相关领域...

    银行家算法-javascript实现.zip

    银行家算法-javascript实现.zip 银行家算法-javascript实现.zip银行家算法-javascript实现.zip银行家算法-javascript实现.zip银行家算法-javascript实现.zip银行家算法-javascript实现.zip银行家算法-javascript实现...

    数字信号处理 理论 算法与实现.配书光盘.C.Fortran.Matlab.rar

    《数字信号处理:理论、算法与实现》是一本深入探讨数字信号处理领域的经典著作,它涵盖了数字信号处理的基础理论、核心算法以及实际应用。这本书的配套光盘包含了C语言、Fortran语言和Matlab的程序代码,为读者提供...

    数字签名算法,c++实现,RSA的算法

    这里的压缩包文件聚焦于RSA算法的C++实现以及数字签名的相关程序。RSA是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,因其发明者的名字首字母命名。它广泛应用于数字证书、网络通信...

    基于FPGA的数字相敏检波算法实现.pdf

    通过FPGA来实现数字相敏检波算法,能够有效提升控制信号的精度,同时解决传统DSP芯片在控制精度和运算速度上存在的不足。 高速采样系统对算法实现的要求非常高,要求具备高速的控制精度和极快的运算速度。对于石油...

    数字签名 RSA算法 c++

    包涵三个RSA算法,c++是实现,数字签名的合集,三个独自的程序,可以独自编译运行,VC6.0下编译 包涵三个RSA算法,c++是实现,数字签名的合集,三个独自的程序,可以独自编译运行,VC6.0下编译

    扩频通信数字基带信号处理算法及其VLSI实现 PDF

    4. 5 采用CORDIC算法实现DDC 4. 5. 1 CORDIC运算器原理 4. 5. 2 CORDIC的VLSI结构 参考文献 第5章 直接数字频率合成器 5. 1 引言 5. 2 DDFS原理及其性能分析 5. 2. 1 直接数字频率合成器的工作原理 5. 2. 2 DDFS的杂...

    数字信号处理-理论 算法与实现_胡广书

    通过本书的学习,读者不仅能够理解数字信号处理的基本概念和原理,还能够掌握实现数字信号处理系统的关键技术,从而在音频处理、图像处理、通信系统等多个领域中得到应用。 总之,《数字信号处理——理论、算法与...

    精通 Visual C++ 数字图像处理典型算法及实现 第2版 (张宏林)

    《精通Visual C++ 数字图像处理典型算法及实现》 第2版 (张宏林) 扫描PDF版及源码 目录 第1章 Visual C++数字图像编程基础 第2章 图像感知与获取 第3章 图像的点运算 第4章 图像的几何变换 第5章 图像的正交变换 第...

    数字加网图像处理调频加网抖动算法误差扩散算法C++实现

    本文主要探讨的是一系列C++实现的数字加网算法,具体包括调频加网和抖动算法,如Bayer算法、Halftone算法、Stucki算法、Jarvis算法以及Floyd-Steinberg算法。 1. **Bayer抖动算法**:Bayer算法是最早的色彩滤波阵列...

    求是科技《Visual C++数字图像处理典型算法及实现》配套光盘

    《Visual C++数字图像处理典型算法及实现》是一本深入探讨使用Microsoft Visual C++进行数字图像处理技术的书籍。该书配套光盘包含了丰富的源代码示例,旨在帮助读者理解和应用各种图像处理算法,从而提升在图像分析...

    基于人工神经网络的手写数字识别算法matlab实现源码(高分项目).zip

    基于人工神经网络的手写数字识别算法matlab实现源码(高分项目).zip基于人工神经网络的手写数字识别算法matlab实现源码(高分项目).zip基于人工神经网络的手写数字识别算法matlab实现源码(高分项目).zip基于人工...

Global site tag (gtag.js) - Google Analytics