javascript - 编写函数实现js输出旋转矩阵
巴扎黑
巴扎黑 2017-04-11 13:25:59
[JavaScript讨论组]

比如,参数是2,输出矩阵

1 2
4 3

参数是3,输出:

1 2 3
8 9 4
7 6 5


请尝试用js编写一个这样的方法!!!求解。

巴扎黑
巴扎黑

全部回复(2)
天蓬老师
function hehe(n) {
      var item = new Array(n);
      var ceng = [];
      for(var i = 0; i < n; i ++) {
        var h = item[i] = new Array(n);
        for(var j = 0; j < n; j ++) {
          var en = Math.min(i,j,n-1-j,n-1-i);
          var hai = 0;
          for(var k = 0; k < en; k ++) {
            hai += haha(n - en + 1);
          }
          h[j] = hai + lala(i-en, j-en, n-en*2);
        }
      }
      for(var i = 0; i < n; i ++) {
        console.log(item[i].join(' '));
      }
    }
    function lala(x,y,n){
      if(n < 1) n = 1;
      if(x === 0){
        return y + 1;
      }else if(y === n-1){
        return n + x;
      }else if(x === n-1){
        return 3*n - y - 2;
      }else if(y === 0){
        return haha(n) - x + 1;
      }
    }
    function haha(x) {
      return (x - 1) * 4;
    }
//调用
hehe(10);
PHP中文网
function getMatrix(n) {
    var matrix = Array.from({length: n }, function() {return []});
    var num = 1,
        rowbegin = 0,
        rowend = n - 1,
        colbegin = 0,
        colend = n - 1;
    while (rowbegin <= rowend && colbegin <= colend) {
        for (var i = colbegin; i <= colend; i++) matrix[rowbegin][i] = num++;
        rowbegin++;

        for (var i = rowbegin; i <= rowend; i++) matrix[i][colend] = num++;
        colend--;

        for (var i = colend; i >= colbegin; i--) matrix[rowend][i] = num++;
        rowend--;

        for (var i = rowend; i >= rowbegin; i--) matrix[i][colbegin] = num++;
        colbegin++;
    }
    return matrix

}

console.log(getMatrix(3))
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号