螺旋矩阵                                                                   

  螺旋矩阵指一个呈螺旋状的矩阵,其数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大, 如此循环。

  实例代码如下:

 (function() {
var map = (function() { function map(n) {
this.map = [],
this.row = 0,
this.col = -1,
this.dir = 0,
this.n = n; // 建立一个二维数组,在一维数组基础上动态增加,取决于n的大小
for (var i = 0; i < this.n; i++) {
this.map.push([]);
} // 定义移动的顺序为:右,下,左,上
var order = [this.right, this.bottom, this.left, this.up];
i = 0;
do {
order[this.dir % 4].call(this) ? i++ : this.dir++;
this.map[this.row][this.col] = i;
} while (i < n * n);
} map.prototype = {
println: function() {
          for (var i = 0; i < this.n; i++) {
console.log(this.map[i].join(' '))
}
},
left: function() {
return this.move(this.row, this.col - 1);
},
right: function() {
return this.move(this.row, this.col + 1);
},
up: function() {
return this.move(this.row - 1, this.col);
},
bottom: function() {
return this.move(this.row + 1, this.col);
},
move: function(row, col) {
return (0 <= row && row < this.n) && (0 <= col && col < this.n) && !this.map[row][col] && (this.row = row, this.col = col, true);
},
}; return map;
})(); new map(3).println();
// 改变map的参数值,能得到不同结果 })();

    图例:
(1)执行上述代码得

(2)改变第51行为:new map(6).println();

    

JavaScript螺旋矩阵的更多相关文章

  1. Code Kata:螺旋矩阵 javascript实现

    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  如图所示,就是一个5*5的螺旋矩阵 我的思路如下: 第一步:拆分 ...

  2. PAT 1050. 螺旋矩阵(25)

    本题要求将给定的N个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第1个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为m行n列,满足条 ...

  3. leetcode-Spiral Matrix II 螺旋矩阵2之python大法好,四行就搞定,你敢信?

    Spiral Matrix II 螺旋矩阵 Given an integer n, generate a square matrix filled with elements from 1 to n2 ...

  4. Java-基础编程(螺旋矩阵&乘法表)

    package cn.rick.study; import java.io.BufferedReader;import java.io.InputStreamReader;import java.ut ...

  5. NOIP 2014 普及组 T3 螺旋矩阵

    [题意] 已知:n,r,c(n<=30000) 条件:给定n行n列的螺旋矩阵(从矩阵的左上角(1,1)出发,初始时向右移动:如果前方是未曾经过的格子, 则继续前进,否则右转:重复上述操作直至经过 ...

  6. PAT-乙级-1050. 螺旋矩阵(25)

    1050. 螺旋矩阵(25) 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求将给定的N个正整数按非递增的 ...

  7. NOIP2014-普及组复赛-第三题-螺旋矩阵

    题目描述 Description 一个n行n列的螺旋矩阵可由如下方法生成: 从矩阵的左上角(第1行第1列)出发,初始时向右移动:如果前方是未曾经过的格子,则继续前进,否则右转:重复上述操作直至经过矩阵 ...

  8. LeetCode 59. Spiral Matrix II (螺旋矩阵之二)

    Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For ...

  9. LeetCode 54. Spiral Matrix(螺旋矩阵)

    Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...

随机推荐

  1. 如何安装Android模拟器到VM虚拟机

    1 像普通安装一样找到ISO镜像文件,该镜像文件名称为"android-x86-2.2-generic.iso",该镜像文件可以从谷歌官网得到 http://code.google ...

  2. Windows 用VS编译libevent源码

    原理:从github上克隆libevent源码,然后使用cmake生成VS工程 github 上 libevent项目地址:https://github.com/libevent/libevent 第 ...

  3. react-native 项目实战 -- 新闻客户端(5) -- 完善首页列表数据

    1.Home.js: /** * 首页 */ import React, { Component } from 'react'; import { AppRegistry, StyleSheet, T ...

  4. react-native 项目实战 -- 新闻客户端(1) -- 初始化项目结构

    1.在项目根目录新建Componet文件夹(专门用来放我们的自定义组件),里面新建Main.js.Home.js.Message.js.Mine.js.Find.js 2.修改 index.andro ...

  5. 基于React的PC网站前端架构分析

    代码地址如下:http://www.demodashi.com/demo/12252.html 本文适合对象 有过一定开发经验的初级前端工程师: 有过完整项目的开发经验,不论大小: 对node有所了解 ...

  6. full join 时通过辅助列序号列消除笛卡尔积重复列

    如果没有序号列,那么如果领灯表里有3条数据,还灯表里面有2条数据,full join后就是3*2=6条数据 --1.领灯表,每天每班每人允许重复数据 select ID ,ROW_NUMBER() o ...

  7. MATLAB squeeze 函数

    squeeze  除去size为1的维度 B = squeeze(A) 描述: B = squeeze(A),B与A有相同的元素,但所有只有一行或一列的维度(a singleton dimension ...

  8. Android开发_Animation

    新建项目: http://www.cnblogs.com/hongten/gallery/image/112163.html 项目结构: http://www.cnblogs.com/hongten/ ...

  9. 链表的艺术——Linux内核链表分析

    引言: 链表是数据结构中的重要成员之中的一个.因为其结构简单且动态插入.删除节点用时少的长处,链表在开发中的应用场景许多.仅次于数组(越简单应用越广). 可是.正如其长处一样,链表的缺点也是显而易见的 ...

  10. Python基础之模块2

    如何导入多个模块? import re #单行导入多个模块 '''多行导入多个模块''' import re import sys import os 如何给模块起别名? import my_modu ...