***
題目:輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。
例如:如果輸入如下矩陣:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
則依次列印出數字
1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10
。分析:第一次看到這個題目的時候,覺得這個題目很簡單,完全不需要用到資料結構或者演算法的知識,因此沒有興趣做這道題。後來聽到包括
autodesk
、emc
在內的多家公司在面試或者筆試裡採用過這道題,於是想這麼多家公司用它來檢驗乙個程式設計師的程式設計功底總是有原因的,於是決定自己寫一遍試一下。真正寫一遍才發現,要完整寫出這道題的**,還真不是件容易的事情。
解決這道題的難度在於**中會包含很多個迴圈,而且還有多個邊界條件需要判斷。如果在把問題考慮得很清楚之前就開始寫**,不可避免地會越寫越混亂。因此解決這個問題的關鍵,在於先要形成清晰的思路,並把複雜的問題分解成若干個簡單的問題。下面分享我分析這個問題的過程。
通常當我們遇到乙個複雜的問題的時候,我們可以用圖形幫助我們思考。
由於我們是以從外圈到內圈的順序依次列印,我們在矩陣中標註一圈作為我們分析的目標。在下圖中,我們設矩陣的寬度為
columns
,而其高度為
rows
。我們我們選取左上角座標為
(startx, starty)
,右下角座標為
(endx, endy)
的乙個圈來分析。
順時針列印矩陣
輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如 如果輸入如下矩陣 1 2 3 45 6 7 89 10 11 1213 14 15 16則依次列印出數字 1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。這個題目 寫的並不好感覺,好多if看著就煩,就是...
順時針列印矩陣
題目 給定乙個矩陣,從外向內順時針列印矩陣中的每乙個數字。例如 給定矩陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 輸出應該為 分析 這道題的意思非常直觀,給人的感覺也是so easy,然而實際去做的時候會發現,如果結構劃分的不好,會出現很多的迴圈,而且包括對各種...
順時針列印矩陣
from 題目 輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如 如果輸入如下矩陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次列印出數字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。網上聽說聽到包括autod...