国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

用javascript生成回型矩陣/蛇形矩陣

n7then / 3330人閱讀

摘要:回型蛇形矩陣形式上述這種形式即為蛇形矩陣。例如的中間公約數(shù)為,所以為三行三列。若為則中間公約數(shù)分別是,所以為四行五列。之后在根據(jù)行列中比較小的那個(gè)來(lái)判斷有幾層回字型。源碼在瀏覽器控制臺(tái)即可調(diào)用函數(shù)。

回型/蛇形矩陣形式
1  2  3
8  9  4
7  6  5

上述這種形式即為蛇形矩陣。

原文首先發(fā)布于 TinyTin的自留地

解決思路

給定一個(gè)數(shù)字 n(為最終值例如上述中 9
首先先判斷有幾行幾列,這里只要求出n 的中間公約數(shù)。例如 9 的中間公約數(shù)為 3 ,所以為三行三列。若 n 為 20 則中間公約數(shù)分別是4,5.所以為四行五列。

之后在根據(jù)行列中比較小的那個(gè)來(lái)判斷有幾層“回字型”。例如n=9 時(shí)候有三層,n=20 時(shí)候也是三層。然后就可以寫個(gè)遞歸來(lái)把這些數(shù)字放進(jìn)一個(gè)二維數(shù)組中的合適位置上。

javascript源碼

在瀏覽器控制臺(tái)即可調(diào)用 Annular 函數(shù)。

function Annular(n) {
    n = parseInt(n);
    var divisor = [];
    for (var i = 1; i <= n; i++) {
        if (n % i == 0) {
            divisor.push(i);
        }
    }
    var len = divisor.length;
    if (len % 2 == 0) {
        var mid = len / 2;
        var row = divisor[mid - 1];
        var col = divisor[mid];
    } else {
        var row = divisor[Math.floor(len / 2)];
        var col = row;
    }
    //console.log("行:" + row + "  列:" + col);
    var arr = new Array(row)
    for (var j = 0; j < arr.length; j++) {
        arr[j] = new Array(col)
    }
    var quan = Math.ceil(row / 2);
    var begin = 1;
    var q = 0;
    while (q < quan) {
        var top = col - q * 2;
        for (var i = 0; i < top; i++) {
            arr[q][i + q] = begin + i;
        }
        var right = row - q * 2;
        for (var i = 0; i < right; i++) {
            arr[i + q][col - 1 - q] = begin + top - 1 + i;
        }
        var bottom = col - q * 2;
        for (var i = 0; i < bottom; i++) {
            arr[row - 1 - q][bottom - i - 1 + q] = begin + top - 1 + right - 1 + i;
        }
        var left = row - q * 2 - 1;
        for (var i = 0; i < left; i++) {
            arr[row - 1 - q - i][q] = begin + top - 1 + right - 1 + bottom - 1 + i;
        }
        var stop = begin + top + right + bottom + left - 4;
        begin = stop + 1;
        q++;
    }
    console.log(arr);
}

例子
Annular(25);

//輸出

[ [ 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 ] ]

Annular(25);

//輸出

[ [ 1, 2, 3, 4, 5 ],
  [ 14, 15, 16, 17, 6 ],
  [ 13, 20, 19, 18, 7 ],
  [ 12, 11, 10, 9, 8 ] ]  

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/80300.html

相關(guān)文章

  • 賽碼模擬題:蛇形填數(shù) SnakeSquare (Java 8)

    摘要:題目在方陣?yán)锾钊胍筇畛缮咝巍L顢?shù)的循環(huán)按照走。重點(diǎn)是控制蛇的方向和移動(dòng)范圍。假設(shè)表示行數(shù),表示列數(shù)垂直向下,遞增,不變,到達(dá)最下方變水平,遞增變?yōu)檫f減。還有要注意矩陣下標(biāo)和坐標(biāo)的區(qū)別,原點(diǎn)位置不同,不建議用作為變量名,易混淆。 題目:在nn方陣?yán)锾钊?,2,...,nn,要求填成蛇形。例如n=4時(shí)方陣為: 10 11 12 1 9 16 13 2 8 15 14 3 7 6 ...

    lk20150415 評(píng)論0 收藏0
  • WebVR開(kāi)發(fā)教程——深度剖析

    摘要:片元著色器主要處理片元顏色,在這里只是將紋理坐標(biāo)和紋理對(duì)象傳給片元著色器。根據(jù)公式分別計(jì)算出左右視口的模型視圖投影矩陣,傳給頂點(diǎn)著色器程序,與頂點(diǎn)緩沖區(qū)的頂點(diǎn)坐標(biāo)相乘繪制出最終頂點(diǎn)。 最近WebVR API 1.1已經(jīng)發(fā)布,2.0草案也在擬定中,在我看來(lái),WebVR走向大眾瀏覽器是早晚的事情了,今天本人將對(duì)WebVR開(kāi)發(fā)環(huán)境和開(kāi)發(fā)流程進(jìn)行深入介紹。 WebVR與WebVR API 首先...

    Cciradih 評(píng)論0 收藏0
  • Tensorflow快餐教程(4) - 矩陣

    摘要:最常用的就是對(duì)角陣,只有一條對(duì)角線上有值。可以通過(guò)函數(shù)來(lái)獲得逆矩陣,例我們來(lái)驗(yàn)算一下與相乘是不是單位矩陣果然是。對(duì)角陣比較特殊,還滿足交換律求行列式的值以判斷是否有逆矩陣我們學(xué)習(xí)線性代數(shù)知道,如果一個(gè)矩陣要想有逆矩陣,它的行列式一定不能為。 矩陣 矩陣的初始化 矩陣因?yàn)樵馗啵猿跏蓟瘮?shù)更多了。光靠tf.linspace,tf.range之類的線性生成函數(shù)已經(jīng)不夠用了。 可以通過(guò)...

    ad6623 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<