昨天看見網上有兩個貼子,關於矩陣數字的問題,仔細發現兩個試題的演算法很相似。
問題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...