關於矩陣數字的兩個有趣問題

2021-05-21 22:45:35 字數 1024 閱讀 7629

昨天看見網上有兩個貼子,關於矩陣數字的問題,仔細發現兩個試題的演算法很相似。

問題1

當引數是1就輸出

1 當引數是2就輸出

222

212

222

當引數是3就輸出

33333

32223

32123

32223

33333

問題2

int i=5; 

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 

int i=6 

1   2   3   4     5   6 

20 21 22 23 24   7 

19 32 33 34 25   8 

18 31 36 35 26   9 

17 30 29 28 27 10 

16 15 14 13 12 11 

分析

仔細看看兩個試題,演算法其實很相似,如下圖所示。

1. 可分解成一圈一圈的,每一圈的規律都相同,如紅色圈與黃色圈、藍色圈遵循相同的規律,如圖g1和g2;

2. g1的每一圈用相同的數字填充,而g2的每一圈則依次遞增,遞增步長為1;

3. 先初始化最外圈,再縮小一圈,直到最後一圈(或最中心,第2題視奇數和偶數不同);如圖g1-1, g1-2, g1-2和g2-1, g2-2, g2-2;

4. 每一圈初始化的時候,可分解為四個邊,每個邊的規律也是相同的,g1-1值不變,g2-1依次遞增,步長為1;

5. 第一邊初始化的時候,依照紅、黃、藍、綠的順序依次,如圖g1-1和g2-1;

6. 依照上述規律,可以通過遞迴方法簡單實現;當然,這只是其中的一種方法,只是有趣而已;

**如下:

兩個有趣的演算法問題

2019年2月19日註 這篇文章原先發在自己github那邊的部落格,時間是2017年2月5日 一共是兩道題,第一道是上學期的matlab考試的時候碰到的,另外一道是師弟發的一道數學題的學習筆記,於是找了個時間想了一下,結合網上找到的資料參考。用的是matlab語言。1.乙隻青蛙,每次可以選擇跳1級...

MySQL兩個有趣的函式

uuid short 返回 矮的 通用識別符號作為64位無符號整數。返回的值uuid short 屬性返回的字串格式128位識別符號不同。uuid 函式具有不同的唯一性。價值uuid short 如果下列條件成立,則保證是唯一的 這個uuid short 返回值是這樣構造的 server id 25...

關於進製的兩個問題

進製轉換主要看個位與個位相乘。1 例如30 中在十進位制中有多少個0呢?5 120 隨後120 6 7 8 9都沒有零出現因為個位相乘沒有零。直到10!出現2個零。所以規律是尋找相乘等於5的因子數。有幾個5就有幾個零。所以20!5!有1個0 1 5 10!有2個0 2 5 15!有3個0 3 5 2...