数字绕圈算法 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(''); }
数字绕圈算法 JS 实现相关推荐
- 轨迹绕圈算法_基于三次B样条曲线拟合的智能车轨迹跟踪算法
收稿日期:2017-10-30; 修回日期:2017-12-10; 录用日期:2017-12-19. 基金项目: 国家自然科学基金资助项目( 91420202,61372088) . 作者简介: 张永 ...
- leetcode202(Floyd判圈算法(龟兔赛跑算法))
Write an algorithm to determine if a number is "happy". 写出一个算法确定一个数是不是快乐数. A happy number ...
- JavaScript实现使用二元运算符将两个数字相加fullAdder算法(附完整源码)
JavaScript实现使用二元运算符将两个数字相加fullAdder算法(附完整源码) getBit.js完整源代码 fullAdder.js完整源代码 getBit.js完整源代码 export ...
- UVa 11549 Calculator Conundrum (训练指南,Floyd 判圈算法)
算法竞赛训练指南, 42 页 注意: 1. 用数组来记录一个数的各位的数字 2. 快慢指针来记录链表环的入点(Floyd 判圈算法) #include <cstdio> #include ...
- 蓝桥ROS→f1tenth和PID绕圈←外传
#勤写标兵挑战赛# 本节实现后,效果如下: 主要有3个点: 车体模型的简单配置 赛道环境的修改 算法参数的简要解释 ↓开启本节之前,需要完成↓: 一键配置←f1tenth和PID绕圈 (*Φ皿Φ*) ...
- c#一维数组按照给定的列行数量绕圈输出
c#一维数组按照给定的列行数量绕圈输出 有一个排完序后的一维数组(1~100),需要按照给定的列行数量将其绕圈输出,比如给定5X5的列行,则输出结果如下: 给定6X5则输出如下(分隔线左边数字是一维数 ...
- Cesium|xt3d绕圈飞行
Cesium|xt3d绕圈飞行 效果 代码 预览地址 效果 代码 <!DOCTYPE html> <html lang="zh-CN"><head&g ...
- 无人车仿真:带反馈的绕圈路径实现
前期入门ros,无论是无人机还是无人车等的控制,基本都是先以仿真学习为主,成熟的仿真理解与功能实现,再搬到现实世界的无人车无人机就变得简单随意,也能减少许多不必要的硬件损坏.但是很多新手都面临过我曾面 ...
- 弗洛伊德龟兔赛跑算法(弗洛伊德判圈算法)
弗洛伊德( 罗伯特・弗洛伊德)判圈算法(Floyd Cycle Detection Algorithm),又称龟兔赛跑算法(Tortoise and Hare Algorithm),是一个可以在有限状 ...
最新文章
- ESX 3.5 与License Server不定时失去连接解决方法一例
- Anaconda 环境下 对Tushare进行测试
- springboot入门demo详解(解决跨域)
- js判断数组中对象是否存在某个值
- PowerBI 11月更新 数据PPT是否会引领新一轮革命
- ubuntu 安装PCL
- mysql与orancl_清晰讲解SQL语句中的外连接,通用于Mysql和Oracle,全是干货哦
- IIS6.0应用程序池回收和工作进程【转:http://www.cnblogs.com/freshman0216/archive/2008/06/02/1212460.html】...
- Android json数据解析及简单例子
- 简单的php文件_简单的php文件上传(实例)
- 引用传递(Java)
- UVA10735 Euler Circuit题解
- node-webkit中使用sqlite3(MAC平台)
- cpu核心分配给不同进程linux,Linux技巧:多核下绑定硬件/进程到不同CPU
- 创建型模式 - 单例模式Singleton
- 便签 java_基于安卓Android的便签笔记APP设计(Android studio)
- matlab 将图片制作成视频并将视频输出为图片
- grid布局浏览器兼容_CSS Grid 网格布局教程
- Activiti实战. 1.2工作流基础
- Win7系统卸载McAfee杀毒软件
热门文章
- Redis 面试面面观
- 钢条切割算法python实现
- 国防科大计算机学院暑期学校,国防科技大学研究生暑期学校:夏季学期别样红...
- Elasticsearch7.9集群部署,head插件,canal同步mysql数据到es,亲自测试,无坑
- jQuery网格插件 ParamQuery
- 教育直播APP开发发展前景浅析!
- mysql workbench 报 tables could not be fetched.
- 99_包(package)
- Kudu 原理、API使用、代码
- Feburary——1438. 绝对差不超过限制的最长连续子数组(滑动窗口)