螺旋矩陣 解法

2021-06-20 14:30:22 字數 673 閱讀 6481

void fun1()

else

if(up_right)

else

int sum = 0; //將現在數值的外面每一層的數值都加起來

if(n % 2 == 0)

for(int k = 0; k < max_level - level ; ++k)

sum += 8 * (max_level - k) - 4;

else

for(int k = 0; k < max_level - level - 1; ++k)

sum += 8 * (max_level - k - 1);

cout<< sum + num <<" ";

if(j % n == 0)

cout《做這道題的思想是:

在奇數情況下

因為有個中心,機 n*n的數就是中心點。那麼所有的資料都是圍著他來繞圈的,可將這些圍成的圈子排個序號,再將圈子中的每個數按從小到大的順序排個序號,即可根據i,j來得出它所在的圈子序號,和他所在圈子中的序號,相加即可得出數值。

在偶數情況下

因為沒有中心點。那麼當我們寫出 當n=4的情況時,可看出其是有規律的。可以 畫個座標軸來找出其幾何規律。就容易給每個數值分出圈子序號了。

其它情況和奇數情況就一樣了。

列印螺旋矩陣(遞迴解法)

求職過程遇到的一道面試題,當時沒有做出來,回來想出幾種方法,其中大多是 蠻力 解法,不得不陷入一堆的i j 迴圈之中。最後想出一種遞迴解法,現記錄如下。題目如下 輸入 n,列印 n n 螺旋矩陣 比如 n 3 列印 1 2 3 8 9 4 7 6 5 n 4 列印 1 2 3 4 12 13 14 ...

列印螺旋矩陣(遞迴解法)

求職過程遇到的一道面試題,當時沒有做出來,回來想出幾種方法,其中大多是 蠻力 解法,不得不陷入一堆的i j 迴圈之中。最後想出一種遞迴解法,現記錄如下。題目如下 輸入n,列印 n n 螺旋矩陣 比如 n 3,列印 1 2 3 8 9 4 7 6 5 n 4,列印 1 2 3 4 12 13 14 5...

LintCode 螺旋矩陣 (新解法)

給定乙個包含 m x n 個要素的矩陣,m 行,n 列 按照螺旋順序,返回該矩陣中的所有要素。您在真實的面試中是否遇到過這個題?yes 樣例給定如下矩陣 1,2,3 4,5,6 7,8,9 應返回 1,2,3,6,9,8,7,4,5 class solution int screw m n for ...