螺旋矩陣
【問題描述】
乙個n行n列的螺旋矩陣可由如下方法生成:
從矩陣的左上角(第1行第1列)出發,初始時向右移動;
如果前方是未曾經過的格仔, 則繼續前進,否則右轉;
重複上述操作直至經過矩陣中所有格仔。根據經過順序,在格仔中依次填入1, 2, 3, ... , n2,便構成了乙個螺旋矩陣。
下圖是乙個n = 4 時的螺旋矩陣。
現給出矩陣大小n以及i和j,請你求出該矩陣中第i行第j列的數是多少。
【題解】
首先,本題有兩種思路。
1.老老實實填陣列。(此方法簡單易懂,但當矩陣過大時,就會出現陣列開不夠大,或long long也不夠的情況)
2. 用演算法找規律,但規律不是一般的難找。我就簡單說說我找到的規律。12
341213145
1116156
10987
1243
首先對比兩表,你就會發現下表就是上表中間四格每個減去12,正好就是外圈12個數中最大的;
而12就是外圈邊長的4倍減4;
於是,就成了這樣12
34121
25113
46109
87紅色是內圈,黑色是外圈
紅色基數為12,黑色基數為0
同時,每一圈最上方的一行就是i的值。
最右方的一列就是n(i)+j-1的值。
最下方的一行就是4n-i-j-1的值。
最左方的一列就是4n-i-j-1的值。
(一定要記得加上外圈基數哦!)
【參考程式】
c語言
#includeint i=2,j=3,n=3;
void luo(int n1)
int main()
螺旋矩陣題解
螺旋矩陣 matrix.cpp 問題描述 乙個n行n列的螺旋矩陣可由如下方法生成 從矩陣的左上角 第1行第1列 出發,初始時向右移動 如果前方是未曾經過的格仔,則繼續前進,否則右轉 重複上述操作直至經過矩陣中所有格仔。根據經過順序,在格仔中依次填入1,2,3,n2,便構成了乙個螺旋矩陣。下圖是乙個n...
LeetCode題解 59 螺旋矩陣 II
給定乙個正整數 n,生成乙個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。示例 輸入 3 輸出 1,2,3 8,9,4 7,6,5 嘗試過用數學公式推導 row col 的值,沒推出來 只能用 真 螺旋 方法生成了,最外層迴圈次數是固定的,n 2次,且生成數也是從1 到 n ...
螺旋方針(螺旋矩陣)
螺旋方陣 time limit 1000ms memory limit 65536kb problem description 的螺旋方陣當n 5和n 3時分別是如下的形式 請給出乙個程式,對於任意的輸入 0 11 輸出按照上面規律所獲得的 的螺旋方陣。input 輸入第一行為整數 0 10 代表有...