摘要:回型蛇形矩陣形式上述這種形式即為蛇形矩陣。例如的中間公約數(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
摘要:題目在方陣?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 ...
摘要:片元著色器主要處理片元顏色,在這里只是將紋理坐標(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 首先...
摘要:最常用的就是對(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ò)...
閱讀 3319·2021-11-23 09:51
閱讀 2436·2021-11-09 09:46
閱讀 1476·2019-08-30 15:54
閱讀 3121·2019-08-30 14:22
閱讀 2909·2019-08-29 12:40
閱讀 1629·2019-08-26 10:33
閱讀 1774·2019-08-23 17:09
閱讀 1553·2019-08-23 16:11